// 文档 https://github.com/hooke007/MPV_lazy/wiki/4_GLSL

// CuNNy 4x24 SOFT (dp4a)
// Copyright (c) 2024 funnyplanter

// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 3.0 of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this program.  If not, see <https://www.gnu.org/licenses/>.
/* ------------------------------------------------------------------- */


//!DESC [CuNNy_4x24_SOFT_vk] -in
//!HOOK LUMA
//!COMPUTE 24 16 8 8
//!BIND LUMA
//!SAVE in
//!WIDTH LUMA.w 3 *
//!HEIGHT LUMA.h 2 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w 1.200 * > OUTPUT.h LUMA.h 1.200 * > *
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable
#ifdef GL_EXT_shader_explicit_arithmetic_types_float16
#	define V4 f16vec4
#	define M4 f16mat4
#	define F float16_t
#else
#	define V4 vec4
#	define M4 mat4
#	define F float
#endif
#define l0(x, y) F((LUMA_mul * texelFetch(LUMA_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(1, 1) + ivec2(0, 0), 0)).r)
shared F G[1][10][10];
void hook() {
	ivec2 xy = ivec2(gl_LocalInvocationID.xy);
	ivec2 pos = ivec2(gl_WorkGroupID.xy) * ivec2(8, 8) + xy;
	ivec2 opos = pos * ivec2(3, 2);
	ivec2 sz = ivec2(LUMA_size) - ivec2(1);
	for (int y = 0; y < 10; y += 8) {
		int ay = xy.y + y;
		if (ay >= 10) break;
		for (int x = 0; x < 10; x += 8) {
			int ax = xy.x + x;
			if (ax >= 10) break;
			G[0][ay][ax] = l0(x - 1, y - 1);
		}
	}
	barrier();
	F s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2;
	V4 r0, r1, r2, r3, r4, r5;
	r0 = V4(0.0); r1 = V4(0.0); r2 = V4(0.0); r3 = V4(0.0); r4 = V4(0.0); r5 = V4(0.0);
	s0_0_0 = G[0][xy.y+0][xy.x+0]; s0_0_1 = G[0][xy.y+0][xy.x+1];
	s0_0_2 = G[0][xy.y+0][xy.x+2]; s0_1_0 = G[0][xy.y+1][xy.x+0];
	s0_1_1 = G[0][xy.y+1][xy.x+1]; s0_1_2 = G[0][xy.y+1][xy.x+2];
	s0_2_0 = G[0][xy.y+2][xy.x+0]; s0_2_1 = G[0][xy.y+2][xy.x+1];
	s0_2_2 = G[0][xy.y+2][xy.x+2];
	r0 += V4(3.740e-01, 4.973e-02, 2.509e-01, -1.253e-01) * s0_0_0;
	r1 += V4(-1.306e-01, -1.102e-01, -2.294e-02, -2.572e-02) * s0_0_0;
	r2 += V4(4.476e-02, 1.074e-03, 7.434e-02, -4.985e-03) * s0_0_0;
	r3 += V4(6.482e-03, -3.101e-02, -1.087e-01, -1.751e-02) * s0_0_0;
	r4 += V4(1.883e-03, 4.751e-03, -4.526e-02, 1.453e-02) * s0_0_0;
	r5 += V4(1.111e-01, 5.530e-03, 1.424e-01, 4.305e-02) * s0_0_0;
	r0 += V4(-9.029e-03, 1.178e-01, 5.943e-01, 1.597e-02) * s0_0_1;
	r1 += V4(-1.587e-01, -6.901e-03, -1.875e-01, -2.035e-02) * s0_0_1;
	r2 += V4(-5.730e-02, -1.581e-02, 4.905e-01, -3.479e-02) * s0_0_1;
	r3 += V4(-2.860e-02, -2.355e-02, -3.947e-02, 1.724e-02) * s0_0_1;
	r4 += V4(-7.069e-03, -5.793e-04, 1.003e-01, -1.733e-01) * s0_0_1;
	r5 += V4(8.542e-03, -5.306e-02, 2.939e-01, -9.433e+00) * s0_0_1;
	r0 += V4(1.155e-03, 8.604e-02, 8.940e-02, 1.082e-01) * s0_0_2;
	r1 += V4(2.615e-02, -6.843e-02, 6.785e-02, -3.086e-02) * s0_0_2;
	r2 += V4(5.022e-03, 5.368e-03, -5.652e-01, 5.414e-03) * s0_0_2;
	r3 += V4(1.994e-02, -3.220e-02, 1.149e-02, -1.079e-02) * s0_0_2;
	r4 += V4(1.334e-03, -3.878e-03, -3.708e-02, 9.282e-03) * s0_0_2;
	r5 += V4(-1.216e-01, 3.491e-02, -2.242e-02, 4.398e-02) * s0_0_2;
	r0 += V4(-2.474e-03, -2.228e-02, -2.504e-01, -2.647e-01) * s0_1_0;
	r1 += V4(-4.285e-02, -6.169e-02, 2.592e-01, -1.301e-02) * s0_1_0;
	r2 += V4(2.183e-02, -2.030e-02, -7.102e-02, -1.626e-01) * s0_1_0;
	r3 += V4(1.428e-02, -3.065e-02, -2.979e-01, 7.601e-03) * s0_1_0;
	r4 += V4(7.687e-03, -5.972e-03, -3.790e-02, -2.581e-02) * s0_1_0;
	r5 += V4(2.153e-01, 1.562e-01, 6.313e-02, 1.196e-02) * s0_1_0;
	r0 += V4(-3.697e-01, -6.152e-01, -5.215e-01, -2.866e-01) * s0_1_1;
	r1 += V4(2.276e-01, 2.450e-01, 1.558e-01, 7.699e-01) * s0_1_1;
	r2 += V4(-5.215e-01, 1.354e-02, -4.747e-01, -6.168e-01) * s0_1_1;
	r3 += V4(-1.808e-03, -1.696e-02, 5.484e-01, 3.205e-01) * s0_1_1;
	r4 += V4(1.483e-02, 4.196e-01, 1.611e-02, 2.849e-01) * s0_1_1;
	r5 += V4(2.685e-01, -4.226e-01, -4.470e-01, 6.919e-02) * s0_1_1;
	r0 += V4(7.037e-03, 2.362e-01, -1.072e-01, 5.635e-01) * s0_1_2;
	r1 += V4(-3.094e-02, 9.830e-03, -8.536e-02, -1.035e-02) * s0_1_2;
	r2 += V4(1.816e-01, 4.901e-01, 5.488e-01, -9.348e-02) * s0_1_2;
	r3 += V4(-9.309e-03, -3.585e-02, -7.981e-02, -3.507e-01) * s0_1_2;
	r4 += V4(1.732e-03, 7.693e-03, 4.553e-02, -9.452e-02) * s0_1_2;
	r5 += V4(-4.815e-01, -5.849e-02, -2.105e-02, -1.148e-02) * s0_1_2;
	r0 += V4(-6.671e-04, 2.963e-02, -4.417e-03, -9.594e-02) * s0_2_0;
	r1 += V4(1.859e-02, -1.545e-01, -2.407e-01, -2.653e-02) * s0_2_0;
	r2 += V4(-5.316e-02, 5.674e-03, -5.156e-03, 1.656e-01) * s0_2_0;
	r3 += V4(5.548e-01, -1.705e-02, -1.379e-02, -2.229e-02) * s0_2_0;
	r4 += V4(-7.970e-03, 8.165e-03, 2.551e-01, -5.277e-03) * s0_2_0;
	r5 += V4(1.162e-01, 9.742e-02, -3.594e-02, 2.808e-03) * s0_2_0;
	r0 += V4(5.691e-03, -7.121e-03, -6.714e-02, -1.842e-01) * s0_2_1;
	r1 += V4(9.211e-02, -4.129e-04, 5.184e-02, -8.111e-03) * s0_2_1;
	r2 += V4(1.323e-01, -2.203e-02, -1.268e-02, 6.677e-01) * s0_2_1;
	r3 += V4(-5.410e-01, 9.288e-01, -1.927e-02, 5.135e-02) * s0_2_1;
	r4 += V4(-5.862e-01, -4.189e-01, -5.605e-01, -1.284e-02) * s0_2_1;
	r5 += V4(1.520e-01, 1.415e-01, -1.717e-02, 1.089e-02) * s0_2_1;
	r0 += V4(-6.056e-03, 4.550e-02, 1.638e-02, 2.715e-01) * s0_2_2;
	r1 += V4(3.547e-03, -3.784e-02, 2.234e-02, -2.946e-02) * s0_2_2;
	r2 += V4(2.403e-01, 1.203e-02, 1.849e-02, 7.598e-02) * s0_2_2;
	r3 += V4(-1.406e-02, -1.296e-02, 4.018e-03, 6.456e-03) * s0_2_2;
	r4 += V4(5.762e-01, -4.939e-03, 4.026e-02, -5.964e-03) * s0_2_2;
	r5 += V4(-2.652e-01, 5.085e-02, 3.051e-02, 2.065e-02) * s0_2_2;
	r0 += V4(1.760e-03, -7.020e-03, 5.201e-03, 5.904e-03);
	r0 = clamp(r0, V4(0.0), V4(1.0));
	imageStore(out_image, opos + ivec2(0, 0), vec4(r0));
	r1 += V4(-1.471e-02, -3.198e-03, -3.398e-02, -7.817e-01);
	r1 = clamp(r1, V4(0.0), V4(1.0));
	imageStore(out_image, opos + ivec2(1, 0), vec4(r1));
	r2 += V4(-8.038e-04, -4.526e-01, -1.524e-03, 5.932e-03);
	r2 = clamp(r2, V4(0.0), V4(1.0));
	imageStore(out_image, opos + ivec2(2, 0), vec4(r2));
	r3 += V4(3.682e-03, -9.459e-01, 2.800e-03, 7.637e-03);
	r3 = clamp(r3, V4(0.0), V4(1.0));
	imageStore(out_image, opos + ivec2(0, 1), vec4(r3));
	r4 += V4(8.970e-03, 4.212e-03, -7.919e-03, 3.061e-02);
	r4 = clamp(r4, V4(0.0), V4(1.0));
	imageStore(out_image, opos + ivec2(1, 1), vec4(r4));
	r5 += V4(3.218e-03, -2.311e-03, -1.346e-02, 1.622e-02);
	r5 = clamp(r5, V4(0.0), V4(1.0));
	imageStore(out_image, opos + ivec2(2, 1), vec4(r5));
}

//!DESC [CuNNy_4x24_SOFT_vk] -conv1
//!HOOK LUMA
//!COMPUTE 24 16 8 8
//!BIND in
//!BIND LUMA
//!SAVE conv1
//!WIDTH LUMA.w 3 *
//!HEIGHT LUMA.h 2 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w 1.200 * > OUTPUT.h LUMA.h 1.200 * > *
#extension GL_EXT_spirv_intrinsics : require
#define l0(x, y) (in_mul * texelFetch(in_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(0, 0), 0))
#define l1(x, y) (in_mul * texelFetch(in_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(1, 0), 0))
#define l2(x, y) (in_mul * texelFetch(in_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(2, 0), 0))
#define l3(x, y) (in_mul * texelFetch(in_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(0, 1), 0))
#define l4(x, y) (in_mul * texelFetch(in_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(1, 1), 0))
#define l5(x, y) (in_mul * texelFetch(in_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(2, 1), 0))
spirv_instruction (extensions = ["SPV_KHR_integer_dot_product"], capabilities = [6019, 6018], id = 4450)
int dp4(int a, int b, spirv_literal int fmt);
#define D(r, s, a, b, c, d) r + ivec4(dp4(s, a, 0), dp4(s, b, 0), dp4(s, c, 0), dp4(s, d, 0))
shared int G[6][10][10];
void hook() {
	ivec2 xy = ivec2(gl_LocalInvocationID.xy);
	ivec2 pos = ivec2(gl_WorkGroupID.xy) * ivec2(8, 8) + xy;
	ivec2 opos = pos * ivec2(3, 2);
	ivec2 sz = ivec2(LUMA_size) - ivec2(1);
	for (int y = 0; y < 10; y += 8) {
		int ay = xy.y + y;
		if (ay >= 10) break;
		for (int x = 0; x < 10; x += 8) {
			int ax = xy.x + x;
			if (ax >= 10) break;
			vec4 v0 = l0(x - 1, y - 1);
			vec4 v1 = l1(x - 1, y - 1);
			vec4 v2 = l2(x - 1, y - 1);
			vec4 v3 = l3(x - 1, y - 1);
			vec4 v4 = l4(x - 1, y - 1);
			vec4 v5 = l5(x - 1, y - 1);
			G[0][ay][ax] = int(packSnorm4x8(v0));
			G[1][ay][ax] = int(packSnorm4x8(v1));
			G[2][ay][ax] = int(packSnorm4x8(v2));
			G[3][ay][ax] = int(packSnorm4x8(v3));
			G[4][ay][ax] = int(packSnorm4x8(v4));
			G[5][ay][ax] = int(packSnorm4x8(v5));
		}
	}
	barrier();
	int s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;
	ivec4 r0, r1, r2, r3, r4, r5;
	vec4 f0, f1, f2, f3, f4, f5;
	r0 = ivec4(0); r1 = ivec4(0); r2 = ivec4(0); r3 = ivec4(0); r4 = ivec4(0); r5 = ivec4(0);
	s0_0_0 = G[0][xy.y+0][xy.x+0]; s0_0_1 = G[0][xy.y+0][xy.x+1];
	s0_0_2 = G[0][xy.y+0][xy.x+2]; s0_1_0 = G[0][xy.y+1][xy.x+0];
	s0_1_1 = G[0][xy.y+1][xy.x+1]; s0_1_2 = G[0][xy.y+1][xy.x+2];
	s0_2_0 = G[0][xy.y+2][xy.x+0]; s0_2_1 = G[0][xy.y+2][xy.x+1];
	s0_2_2 = G[0][xy.y+2][xy.x+2]; s1_0_0 = G[1][xy.y+0][xy.x+0];
	s1_0_1 = G[1][xy.y+0][xy.x+1]; s1_0_2 = G[1][xy.y+0][xy.x+2];
	s1_1_0 = G[1][xy.y+1][xy.x+0]; s1_1_1 = G[1][xy.y+1][xy.x+1];
	s1_1_2 = G[1][xy.y+1][xy.x+2]; s1_2_0 = G[1][xy.y+2][xy.x+0];
	s1_2_1 = G[1][xy.y+2][xy.x+1]; s1_2_2 = G[1][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xEF06E90D, 0xFCFFFFFD, 0xFA0702F3, 0x000201FE);
	r1 = D(r1, s0_0_0, 0xD8F8EEE5, 0xFDFF08F4, 0xFACCE7CB, 0x00F01303);
	r2 = D(r2, s0_0_0, 0xF7FBF8FD, 0xE3F50BFE, 0x0CFD0506, 0xF904FAFF);
	r3 = D(r3, s0_0_0, 0xE9F002FB, 0x00FFFB12, 0x0205FE00, 0x020000FF);
	r4 = D(r4, s0_0_0, 0xEA01C01B, 0xE907F9FE, 0xF6F2120C, 0x02F50EF8);
	r5 = D(r5, s0_0_0, 0xFF07FDFA, 0xF4BED81D, 0x0002F001, 0xE6F019F7);
	r0 = D(r0, s0_0_1, 0xF701020C, 0xFF00F3F8, 0xF1F507FA, 0xFEFFFF06);
	r1 = D(r1, s0_0_1, 0x040105DE, 0xF8F0FFD5, 0xFBE80E34, 0xF2F71BDC);
	r2 = D(r2, s0_0_1, 0xFB09FE0A, 0xEE2814FC, 0x01FCED08, 0xDFF75DF5);
	r3 = D(r3, s0_0_1, 0x0D0FECE9, 0x020DF418, 0x07FFFAF8, 0xFEFF0001);
	r4 = D(r4, s0_0_1, 0xD628F9D8, 0x07250C07, 0x1212F136, 0x15261800);
	r5 = D(r5, s0_0_1, 0x0A1202D9, 0xE5997FE9, 0xF601F302, 0xC0FB1AED);
	r0 = D(r0, s0_0_2, 0x03FA02F6, 0xFF0305FD, 0xF7080606, 0xFF01FF03);
	r1 = D(r1, s0_0_2, 0xFD0506FA, 0xFC0400FF, 0xFAED18F9, 0xFACD2DEA);
	r2 = D(r2, s0_0_2, 0x03FFFAFC, 0xDFF1EB0B, 0x02FD110A, 0x010A0E10);
	r3 = D(r3, s0_0_2, 0xFA000545, 0x0102EA0F, 0x000002FC, 0xFF010500);
	r4 = D(r4, s0_0_2, 0xF2FAFDE5, 0xF3FA07DB, 0x11F30623, 0x12F1E61A);
	r5 = D(r5, s0_0_2, 0xFF13F5F0, 0xFFD5FC08, 0x050B08FD, 0xF808FC11);
	r0 = D(r0, s0_1_0, 0xF408FFE3, 0x080A01FD, 0x171C0F0A, 0x000109FE);
	r1 = D(r1, s0_1_0, 0xF3FD0FFC, 0x0200F507, 0x0BF815DD, 0x2D1806E7);
	r2 = D(r2, s0_1_0, 0x1BF10306, 0x39ED4306, 0xE5FA27F4, 0x1302ECFB);
	r3 = D(r3, s0_1_0, 0xA7C7BBAE, 0x0912EDF0, 0xB200FCF7, 0x03010202);
	r4 = D(r4, s0_1_0, 0xEFEDC713, 0x20CF0F15, 0x001C6DEF, 0xF713C8EC);
	r5 = D(r5, s0_1_0, 0xF6F2070F, 0xD9DC2AE6, 0x000BD4F8, 0x6E01FA14);
	r0 = D(r0, s0_1_1, 0xD6D1C814, 0x0CD5F5E3, 0xF9A095F7, 0x0FF60AFF);
	r1 = D(r1, s0_1_1, 0xFC3B065B, 0x02EC1AF0, 0x1331163C, 0x132AEFAA);
	r2 = D(r2, s0_1_1, 0x0CFD080C, 0x81E10A36, 0x03F628E3, 0x2DD1AA81);
	r3 = D(r3, s0_1_1, 0x01AF082E, 0x08FCC5E3, 0xE5FC1111, 0x130103FD);
	r4 = D(r4, s0_1_1, 0xA503FDE3, 0xAF11C447, 0xFFF026BF, 0x071ECB01);
	r5 = D(r5, s0_1_1, 0xE906FBE0, 0x044CEFE4, 0x27202B0F, 0x5B1BE0F6);
	r0 = D(r0, s0_1_2, 0xF809EE6B, 0x0416F9FF, 0xF0FE0C20, 0x01FFFEFE);
	r1 = D(r1, s0_1_2, 0x01050BEB, 0xFCFC201F, 0x06E5F2DF, 0x2AF6EE24);
	r2 = D(r2, s0_1_2, 0x02F2040D, 0x2C0A0CB9, 0x06F1F60A, 0xC1D0F3CF);
	r3 = D(r3, s0_1_2, 0x0C0FF4FB, 0xFCBF9C4E, 0xFE000305, 0x0B00F9EF);
	r4 = D(r4, s0_1_2, 0xDD181FB5, 0x09E51FAC, 0xFAE8F92E, 0x0BC0F21B);
	r5 = D(r5, s0_1_2, 0xF6F0080C, 0xFA0FD608, 0x070B0618, 0x1A0FF1E4);
	r0 = D(r0, s0_2_0, 0x0A11FAEA, 0xFE05FCFD, 0xFF091415, 0xFC08E9FC);
	r1 = D(r1, s0_2_0, 0xFBF6FAFD, 0xFBE6F0FB, 0xF209110A, 0xF80C0327);
	r2 = D(r2, s0_2_0, 0x1F111C11, 0xC2FAE908, 0x030204FC, 0x0416F109);
	r3 = D(r3, s0_2_0, 0x3615520C, 0x05010F29, 0x05FAF901, 0x04FE0501);
	r4 = D(r4, s0_2_0, 0x0DF30E14, 0x03EDFFF7, 0xF5333CF5, 0x16F80026);
	r5 = D(r5, s0_2_0, 0xF1EBED06, 0x1AECEBFA, 0x03FF0101, 0xD11E10DD);
	r0 = D(r0, s0_2_1, 0x0681A7F5, 0x01FF0CF1, 0xFC15DBBD, 0xF09302EC);
	r1 = D(r1, s0_2_1, 0x1301F7E5, 0x0209ED22, 0x08DBE6CF, 0xF1F20321);
	r2 = D(r2, s0_2_1, 0xF55D05F8, 0x000545C1, 0x0B400103, 0xF3EE0728);
	r3 = D(r3, s0_2_1, 0x03CF1BC8, 0xFB9F350A, 0x02FF0013, 0x2D08FB07);
	r4 = D(r4, s0_2_1, 0x3AFDF623, 0x200D3FF1, 0xD909EAD6, 0xED4029F7);
	r5 = D(r5, s0_2_1, 0x0A21F203, 0x04301CFB, 0xEB20F715, 0xB9E90AF9);
	r0 = D(r0, s0_2_2, 0xE01DEADE, 0xFF02FFF1, 0x091AD51B, 0x00FAFEFF);
	r1 = D(r1, s0_2_2, 0xFDFFF51A, 0x081B0ACB, 0x01E9EB26, 0x000A02FF);
	r2 = D(r2, s0_2_2, 0x04F602FD, 0xF90EFE43, 0xF101F724, 0xF9090AF7);
	r3 = D(r3, s0_2_2, 0xF713FBE3, 0xE0C7E9DA, 0x00FE02F9, 0x04F206E9);
	r4 = D(r4, s0_2_2, 0xF6FDCCFB, 0xDEF80BF9, 0xFCC9F315, 0xF1CDF9C3);
	r5 = D(r5, s0_2_2, 0x05F50DFF, 0xFDFC010D, 0xFFE4FEC9, 0xF5E8FC4C);
	r0 = D(r0, s1_0_0, 0x160AED0A, 0x0202F400, 0x96F8FD15, 0x00FEF905);
	r1 = D(r1, s1_0_0, 0xE909EBEA, 0xCA000600, 0x6506CDEA, 0xF320E7C0);
	r2 = D(r2, s1_0_0, 0x08010704, 0x81F50C07, 0x0FFB1005, 0xD5FEE2D0);
	r3 = D(r3, s1_0_0, 0xE3FC1927, 0x3FF0080C, 0x0C02F9FB, 0xF8FEFF02);
	r4 = D(r4, s1_0_0, 0xD51AF2D5, 0xAB00E702, 0xDD16E80F, 0x0020ECDB);
	r5 = D(r5, s1_0_0, 0x0302F6FB, 0xF7EC2911, 0x080505FF, 0x58121F18);
	r0 = D(r0, s1_0_1, 0xDA08FBFC, 0x04FF0009, 0xEA0701F3, 0xD3FD07FA);
	r1 = D(r1, s1_0_1, 0xE5E90320, 0x63FCF11B, 0xC9B2F91D, 0x19DFFE42);
	r2 = D(r2, s1_0_1, 0xFFFD09FA, 0xF500E1EB, 0xCE0C0C03, 0x0219DB27);
	r3 = D(r3, s1_0_1, 0xA1E08100, 0x8126E8DD, 0x0A0116FC, 0xFFFE0200);
	r4 = D(r4, s1_0_1, 0xE1E6353D, 0x7F1A07AC, 0x81E3C3D2, 0x5B03FA10);
	r5 = D(r5, s1_0_1, 0x19FB0D1F, 0x7FE5D0FC, 0x0CFD01FE, 0xCFECD028);
	r0 = D(r0, s1_0_2, 0x06F2E6FE, 0x18FEE0FA, 0xD91396FA, 0x0411FDF8);
	r1 = D(r1, s1_0_2, 0xD50A0EFC, 0x94E60117, 0x514DEFB2, 0xC61A31FC);
	r2 = D(r2, s1_0_2, 0x130BFCEE, 0x810C81F7, 0x1800DFFC, 0x81F8931A);
	r3 = D(r3, s1_0_2, 0x6D10FDF3, 0xDBD336F0, 0xFEFEFE07, 0x0403F002);
	r4 = D(r4, s1_0_2, 0x46E744E3, 0xD50A0908, 0xD8F4F40F, 0xB819F8EF);
	r5 = D(r5, s1_0_2, 0x000134F7, 0xDB1E812A, 0x14121EE7, 0xAFFE29FA);
	r0 = D(r0, s1_1_0, 0x0612FC2B, 0x0205F3FD, 0xC40F3113, 0xF00202FC);
	r1 = D(r1, s1_1_0, 0xE2FF1812, 0x05060517, 0x812E0802, 0x81F41B69);
	r2 = D(r2, s1_1_0, 0x19F50101, 0x810CED11, 0xCC010A00, 0xF308C3F4);
	r3 = D(r3, s1_1_0, 0x1CFCE9EF, 0x81FD0619, 0x2F0E0107, 0x0AFEF9FC);
	r4 = D(r4, s1_1_0, 0x6523080B, 0x81170545, 0x652804FC, 0x470211EF);
	r5 = D(r5, s1_1_0, 0xF40512FF, 0x7F13BBF8, 0xE4010102, 0x811AFB22);
	r0 = D(r0, s1_1_1, 0x28E93D06, 0x2FFE07FB, 0x7BE60445, 0xA1FCFF0C);
	r1 = D(r1, s1_1_1, 0x9AFD811A, 0xD6060EDF, 0x51DAD9BF, 0x3AC7E29B);
	r2 = D(r2, s1_1_1, 0x3DFCF905, 0x70FEF718, 0x4AF40A1B, 0x7F080727);
	r3 = D(r3, s1_1_1, 0x28E9DDE6, 0xCFDD0DE8, 0xDE03F2F5, 0xF1FFECF8);
	r4 = D(r4, s1_1_1, 0xC4FE2839, 0x18DA039D, 0x94E20B0C, 0xFB1257A8);
	r5 = D(r5, s1_1_1, 0x7F272CDE, 0xA11A60DF, 0x1AFE02DE, 0x30D31FCB);
	r0 = D(r0, s1_1_2, 0x81ED06D7, 0xFBF90503, 0x012E4FE2, 0xF7ECF812);
	r1 = D(r1, s1_1_2, 0x34FE01DA, 0x333FE312, 0xDA56F5C4, 0x0DFCF789);
	r2 = D(r2, s1_1_2, 0xF6F61209, 0x83EEBBE6, 0xCAFD8FE8, 0x0CE61715);
	r3 = D(r3, s1_1_2, 0xC50EFBE2, 0x6800B50A, 0xDBFC0EFC, 0xF6061107);
	r4 = D(r4, s1_1_2, 0x81B41606, 0x7F03FF26, 0x61F310CF, 0x7F067FE7);
	r5 = D(r5, s1_1_2, 0xCB2B0307, 0x06D33B3B, 0xFF023D12, 0x40120816);
	r0 = D(r0, s1_2_0, 0x0A03EE00, 0xF801FE03, 0x9BFC0423, 0x1A03FB0D);
	r1 = D(r1, s1_2_0, 0x1603F6EE, 0x1D0B07E2, 0x8A02E457, 0x1CE8E60A);
	r2 = D(r2, s1_2_0, 0x81F9F9FF, 0x14001C00, 0x1B020DED, 0xD800DFF1);
	r3 = D(r3, s1_2_0, 0xAB0B4048, 0x1EF8D9DF, 0xFE0001FD, 0xF4FCFD04);
	r4 = D(r4, s1_2_0, 0xE924C507, 0xDDFFE6D6, 0xDE27F90D, 0x8107E8BB);
	r5 = D(r5, s1_2_0, 0x2A0ADBF7, 0x0C03F301, 0xE702F403, 0x730C3DF5);
	r0 = D(r0, s1_2_1, 0xFB17FB42, 0xFDFF0AFA, 0x720ED525, 0x7DF6FE0D);
	r1 = D(r1, s1_2_1, 0x0D03F0F8, 0xEEFE0300, 0x3BDBFA05, 0x1013FF0C);
	r2 = D(r2, s1_2_1, 0x1F03D9DE, 0x19F2ED14, 0x1504CFD9, 0x13DBAFBC);
	r3 = D(r3, s1_2_1, 0xDF4ABF9C, 0x56F11802, 0xEE00F305, 0xFB02FBF8);
	r4 = D(r4, s1_2_1, 0x6DE609C6, 0xA73CF55F, 0xE4F24041, 0xC73AC035);
	r5 = D(r5, s1_2_1, 0x8112F0E2, 0x81030069, 0xFF0306F8, 0x3100D8F8);
	r0 = D(r0, s1_2_2, 0x1ADF03C9, 0x02FD1C0A, 0x650781F0, 0xF3001101);
	r1 = D(r1, s1_2_2, 0xDFF70FF7, 0xC80F07F3, 0xFD3CE934, 0xB5F01FED);
	r2 = D(r2, s1_2_2, 0xE7061001, 0x600B461F, 0xF5EF3D33, 0xFA05D419);
	r3 = D(r3, s1_2_2, 0xF8032201, 0xE72CE638, 0x00010111, 0x1C0AF706);
	r4 = D(r4, s1_2_2, 0x5108C6EE, 0x33131021, 0xFF050B1C, 0x28C5CA2C);
	r5 = D(r5, s1_2_2, 0xED29FB22, 0x3CFAE5FC, 0xF8F60A0F, 0x92ED320C);
	s0_0_0 = G[2][xy.y+0][xy.x+0]; s0_0_1 = G[2][xy.y+0][xy.x+1];
	s0_0_2 = G[2][xy.y+0][xy.x+2]; s0_1_0 = G[2][xy.y+1][xy.x+0];
	s0_1_1 = G[2][xy.y+1][xy.x+1]; s0_1_2 = G[2][xy.y+1][xy.x+2];
	s0_2_0 = G[2][xy.y+2][xy.x+0]; s0_2_1 = G[2][xy.y+2][xy.x+1];
	s0_2_2 = G[2][xy.y+2][xy.x+2]; s1_0_0 = G[3][xy.y+0][xy.x+0];
	s1_0_1 = G[3][xy.y+0][xy.x+1]; s1_0_2 = G[3][xy.y+0][xy.x+2];
	s1_1_0 = G[3][xy.y+1][xy.x+0]; s1_1_1 = G[3][xy.y+1][xy.x+1];
	s1_1_2 = G[3][xy.y+1][xy.x+2]; s1_2_0 = G[3][xy.y+2][xy.x+0];
	s1_2_1 = G[3][xy.y+2][xy.x+1]; s1_2_2 = G[3][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x08FDD80C, 0xFD000607, 0xEF06C201, 0xFC01CD05);
	r1 = D(r1, s0_0_0, 0xE1EEF78F, 0xEA0703F7, 0xAA0DF0EF, 0x89DD27B7);
	r2 = D(r2, s0_0_0, 0x03FF0207, 0x1AF911D3, 0x0BFEC4F0, 0x07FA0F01);
	r3 = D(r3, s0_0_0, 0x0F2BE7D9, 0xEA0E8115, 0xFAFD19F9, 0xFEFFF5FF);
	r4 = D(r4, s0_0_0, 0x1914C7A6, 0xE91437FC, 0xDE02810B, 0xFF113BE6);
	r5 = D(r5, s0_0_0, 0xFE1E4519, 0x30F17FE3, 0x07FF2FE4, 0x28FEEA0E);
	r0 = D(r0, s0_0_1, 0xD60C0A34, 0x7F060707, 0x33FEE2F8, 0x06000904);
	r1 = D(r1, s0_0_1, 0xE0F6FDFC, 0xDCF6B910, 0x3CF87D19, 0xBFF4E2BE);
	r2 = D(r2, s0_0_1, 0xFFFE0FFA, 0xFCF5CE28, 0xDD0211E5, 0xCCF7BD07);
	r3 = D(r3, s0_0_1, 0x531D76E1, 0x470FFECB, 0x0C0201FF, 0xFF010005);
	r4 = D(r4, s0_0_1, 0xD80357E6, 0x480EC10F, 0x2519C407, 0x250BD9F8);
	r5 = D(r5, s0_0_1, 0x371BEF02, 0x81051E32, 0xFF041FD3, 0xE8ECE1D5);
	r0 = D(r0, s0_0_2, 0x0D05FB19, 0xF4010101, 0xF4090004, 0xFF000103);
	r1 = D(r1, s0_0_2, 0xF9010606, 0xF1FEE40C, 0xE407E3E0, 0x17FDEED0);
	r2 = D(r2, s0_0_2, 0x0BFEFBFC, 0xEDF58118, 0x0C0007FB, 0x21F6D4E9);
	r3 = D(r3, s0_0_2, 0xDE000CFD, 0xFF01FDF1, 0xFC020002, 0xFEFF0303);
	r4 = D(r4, s0_0_2, 0x31002518, 0xEBF2A704, 0x2B030EE2, 0x010C0813);
	r5 = D(r5, s0_0_2, 0x0209F90A, 0xFAFFCC04, 0xFC07F7FB, 0xFE060B09);
	r0 = D(r0, s0_1_0, 0xF0F6342D, 0xFC021D08, 0x0DED10F1, 0xF7F9E401);
	r1 = D(r1, s0_1_0, 0x082B022B, 0x14F0E9F9, 0xB932370D, 0x0E11F311);
	r2 = D(r2, s0_1_0, 0xF60215FA, 0x09F321DD, 0x0CFE11E9, 0xFC155ADD);
	r3 = D(r3, s0_1_0, 0xAB1F0D81, 0xFF1395E6, 0xFE0E05D8, 0xFE01F203);
	r4 = D(r4, s0_1_0, 0xD5EEA7FC, 0x1E0CC2E7, 0xC5E481FA, 0x24E17F0B);
	r5 = D(r5, s0_1_0, 0x04257412, 0x1D0518FC, 0x03FCE001, 0x0E27F404);
	r0 = D(r0, s0_1_1, 0x030D8194, 0x0709F3FF, 0xBCEA3120, 0x7F01DDF8);
	r1 = D(r1, s0_1_1, 0xF10F24E9, 0x37F0631D, 0x212A1401, 0xC3FFEC20);
	r2 = D(r2, s0_1_1, 0xA5FEF7F5, 0x303EDAED, 0xEBEAB5ED, 0xF18D2C16);
	r3 = D(r3, s0_1_1, 0x2806F505, 0x540A43E2, 0xFE05E204, 0xF0FFF8FC);
	r4 = D(r4, s0_1_1, 0x4ED381FC, 0x894D6D24, 0xCA175825, 0xBB2F6CDD);
	r5 = D(r5, s0_1_1, 0xE1170621, 0xA10C1E36, 0xE2000141, 0x03D920DC);
	r0 = D(r0, s0_1_2, 0x2E0F0B19, 0xFC060303, 0xD405961F, 0x0900FAFD);
	r1 = D(r1, s0_1_2, 0x0607F7F5, 0xECFFEB04, 0xF5F5E311, 0x0CF303EE);
	r2 = D(r2, s0_1_2, 0x0AFD02FF, 0xC5000A21, 0xF307250B, 0xEDF7F31D);
	r3 = D(r3, s0_1_2, 0xDDFDEFE3, 0xCBFAF030, 0x0A01FFFD, 0x1203FB00);
	r4 = D(r4, s0_1_2, 0x0B22DCE4, 0xA6EF1AF9, 0x3FFE0EFF, 0xDF12F4EE);
	r5 = D(r5, s0_1_2, 0xEB0303FF, 0x1F03F7F9, 0xFD060EFA, 0x0CFCE0F4);
	r0 = D(r0, s0_2_0, 0xFDE3FAE1, 0x02F9F301, 0x0BD07F05, 0xFC155403);
	r1 = D(r1, s0_2_0, 0x04091B02, 0xFE3129FD, 0xDED3ED13, 0x07133BFF);
	r2 = D(r2, s0_2_0, 0x051E0209, 0xE42A3A2A, 0x01F818EC, 0x05F43CF2);
	r3 = D(r3, s0_2_0, 0x0ECD9685, 0xEEF4550E, 0xFF03F5FC, 0x040213FF);
	r4 = D(r4, s0_2_0, 0x17CE6BDE, 0x0D028BE1, 0xEDC3A103, 0x0CE928E5);
	r5 = D(r5, s0_2_0, 0xEF038122, 0x0FFC8101, 0x0101E4F7, 0xF3624A18);
	r0 = D(r0, s0_2_1, 0x0E1B7FEE, 0x0402F7FA, 0xDCFD7754, 0xF2FE0D17);
	r1 = D(r1, s0_2_1, 0xF9F5E0F5, 0x050FC3EF, 0xE1F6E20D, 0xFF05D5F7);
	r2 = D(r2, s0_2_1, 0xF50EED00, 0x2F0D58F0, 0x171AE5F7, 0x0701F1F6);
	r3 = D(r3, s0_2_1, 0x10FEFDF9, 0xE981146D, 0x000104F4, 0xFE0201F6);
	r4 = D(r4, s0_2_1, 0xFDEE29EA, 0xE90A11C1, 0xDFE01C0A, 0x08182421);
	r5 = D(r5, s0_2_1, 0x14FFE8FB, 0xFCDB0F04, 0xF8F5FCFD, 0xF1160AF9);
	r0 = D(r0, s0_2_2, 0xE7140F04, 0x01060500, 0x051715E9, 0xFFFFFFFC);
	r1 = D(r1, s0_2_2, 0x0401EDFF, 0x0E12FA00, 0xF101FEFC, 0x0B0BE0FF);
	r2 = D(r2, s0_2_2, 0x06FEFDFE, 0xEB04A5F8, 0xFAFD28F8, 0x0702F004);
	r3 = D(r3, s0_2_2, 0xF00C06FD, 0xD1D0ED4E, 0x05FFFFFD, 0x02040B08);
	r4 = D(r4, s0_2_2, 0xF4073004, 0x28036FCB, 0x23ECD412, 0xF2E6F943);
	r5 = D(r5, s0_2_2, 0xFAF9D103, 0x0A011DFE, 0x020C0103, 0x1E10EEF9);
	r0 = D(r0, s1_0_0, 0xFB071006, 0x05020C04, 0xF600AC01, 0x06000602);
	r1 = D(r1, s1_0_0, 0xA43CE3F7, 0xFC0BDBFF, 0x0533AA2E, 0xFF1081FC);
	r2 = D(r2, s1_0_0, 0x040164F6, 0xF4E88123, 0xFEFAD518, 0x1B1C9B17);
	r3 = D(r3, s1_0_0, 0x1AEF19FC, 0x18F895F5, 0xEC0B32E4, 0x00FD0704);
	r4 = D(r4, s1_0_0, 0x0C2449E2, 0x3B118126, 0x0F0D44F6, 0x1027F11C);
	r5 = D(r5, s1_0_0, 0x0F0FF811, 0xC6E77F00, 0xED01EFFA, 0xC9F98123);
	r0 = D(r0, s1_0_1, 0xD5F7F9D1, 0xE6EE14F5, 0xEFF75BE4, 0xF1FCA90F);
	r1 = D(r1, s1_0_1, 0x1DB0C513, 0xDD10D713, 0xDFF1E302, 0x00BF24E6);
	r2 = D(r2, s1_0_1, 0xFD0130EC, 0x1E0342CC, 0x27F811FB, 0x5AFD7FDF);
	r3 = D(r3, s1_0_1, 0xF5FA411F, 0x040FEA2A, 0xF6FFEA2D, 0x0101F507);
	r4 = D(r4, s1_0_1, 0xAF131213, 0x08324EB7, 0xF122B400, 0xFE163456);
	r5 = D(r5, s1_0_1, 0x05F740FD, 0x2432D5F0, 0xFFFF21DC, 0x1DD3EC59);
	r0 = D(r0, s1_0_2, 0x0CFE8B29, 0xFE0EFA00, 0x05F2EF02, 0x040306FD);
	r1 = D(r1, s1_0_2, 0xF8FE0A1D, 0xD807C9E4, 0x23293DFE, 0x0006F0FD);
	r2 = D(r2, s1_0_2, 0x0305FDFE, 0xF6F4815F, 0x00FFF2EE, 0xD9D9CB15);
	r3 = D(r3, s1_0_2, 0x2410DA56, 0xF02E29BD, 0xFFFDE9FE, 0x0001F708);
	r4 = D(r4, s1_0_2, 0xDCE8810E, 0xD40859ED, 0x08F81EDA, 0xF32A7FE4);
	r5 = D(r5, s1_0_2, 0xF80CF9FD, 0x12BF940E, 0xF72204F8, 0x340818BB);
	r0 = D(r0, s1_1_0, 0xE0151608, 0x0903FB02, 0x20E1AC16, 0x07080002);
	r1 = D(r1, s1_1_0, 0x1E0816F8, 0x45F31E00, 0xF5000C0E, 0x01E1E517);
	r2 = D(r2, s1_1_0, 0xECF6812B, 0x0F0047D0, 0xF0FA17EC, 0xCC0FE41B);
	r3 = D(r3, s1_1_0, 0xCB48B2DC, 0xC6FD170A, 0x5F3809F4, 0x0800E703);
	r4 = D(r4, s1_1_0, 0x3C10C6EA, 0xD5D1FAE1, 0x2427DEFD, 0x07E281D1);
	r5 = D(r5, s1_1_0, 0x0DF038DC, 0xFC30EDF5, 0x1701F6FE, 0xA8C152FF);
	r0 = D(r0, s1_1_1, 0x290AFCE7, 0x10FDF408, 0xCF0565D4, 0xFCD653FB);
	r1 = D(r1, s1_1_1, 0x001015EB, 0x1DFFE53C, 0x0D0120D7, 0x2A0C190D);
	r2 = D(r2, s1_1_1, 0x0A1D0FB8, 0xF049E1D0, 0xE3271205, 0xF32F04F0);
	r3 = D(r3, s1_1_1, 0x1BFD05C1, 0x810B45D3, 0xEAB7EEFF, 0x01FDDC1B);
	r4 = D(r4, s1_1_1, 0xE8FA4FF2, 0xFF0EED0F, 0xB9DDD1E2, 0x22CC93D1);
	r5 = D(r5, s1_1_1, 0x0F27810D, 0xEAD78413, 0x0FFB0417, 0xFFE929FC);
	r0 = D(r0, s1_1_2, 0xE3C8EAF1, 0x080705FC, 0xF6C4E65F, 0xFC00F502);
	r1 = D(r1, s1_1_2, 0x0709F5FA, 0x03EADDEC, 0xC7EF1701, 0x1809AA1A);
	r2 = D(r2, s1_1_2, 0x0C060701, 0xE1D451E2, 0x00E6E91F, 0xB5E220F2);
	r3 = D(r3, s1_1_2, 0x0CFA14BD, 0x3A25FDD4, 0x00F70801, 0x08122CA5);
	r4 = D(r4, s1_1_2, 0x37B83EE1, 0x1D7F29FB, 0xF804DAE1, 0xEFC84D17);
	r5 = D(r5, s1_1_2, 0xF4F005DF, 0xFFE354E5, 0x0EE9FBF9, 0xEC198117);
	r0 = D(r0, s1_2_0, 0x2AFAFE08, 0x0000FD02, 0x07D9E7F4, 0xFCFBF2FD);
	r1 = D(r1, s1_2_0, 0x1609FBFF, 0xF301FCF8, 0x1DDCBE0B, 0x0EDB2CFE);
	r2 = D(r2, s1_2_0, 0xE2D10307, 0x0F21B9F6, 0x0F14FB05, 0xF8041807);
	r3 = D(r3, s1_2_0, 0xEED30EE9, 0x23020409, 0xF1090500, 0x06FB0102);
	r4 = D(r4, s1_2_0, 0xD10512FE, 0xF012E40A, 0x07E2DB0A, 0xC41822F3);
	r5 = D(r5, s1_2_0, 0xE12FF506, 0x04133C10, 0xEEFDFA04, 0x42F10103);
	r0 = D(r0, s1_2_1, 0xE50805FD, 0x030308FE, 0x1018F7E0, 0x0D2910FD);
	r1 = D(r1, s1_2_1, 0x07F205FE, 0xEEF91EFE, 0x150716F4, 0xE307E600);
	r2 = D(r2, s1_2_1, 0xFD01E918, 0xF1EE2FF1, 0x19D905F7, 0x47FD0B02);
	r3 = D(r3, s1_2_1, 0x14DDE306, 0x3BF5D822, 0xF7060406, 0xDDCB1709);
	r4 = D(r4, s1_2_1, 0x0F17F9FD, 0x200EE5F7, 0x02072710, 0xF51ED60A);
	r5 = D(r5, s1_2_1, 0xFBE308F9, 0xECE0CA10, 0xF607FB04, 0xE0EC01E2);
	r0 = D(r0, s1_2_2, 0xF2F2F2EF, 0xFFFFFD00, 0x27D520F5, 0xFFFEF601);
	r1 = D(r1, s1_2_2, 0xFDF80201, 0xF50CF4FF, 0x04FDEE02, 0x18151607);
	r2 = D(r2, s1_2_2, 0x0301F204, 0x0602CB09, 0xEB0903FF, 0xE1E8DF03);
	r3 = D(r3, s1_2_2, 0xF0FCFCFA, 0x01BC00E5, 0xFFFFFA02, 0x0D330312);
	r4 = D(r4, s1_2_2, 0xF8D0F005, 0xED81F0FB, 0x1FF31608, 0x01ED06EE);
	r5 = D(r5, s1_2_2, 0xFDECF217, 0x07FE0B0C, 0x0FF40101, 0x1B1E18E4);
	s0_0_0 = G[4][xy.y+0][xy.x+0]; s0_0_1 = G[4][xy.y+0][xy.x+1];
	s0_0_2 = G[4][xy.y+0][xy.x+2]; s0_1_0 = G[4][xy.y+1][xy.x+0];
	s0_1_1 = G[4][xy.y+1][xy.x+1]; s0_1_2 = G[4][xy.y+1][xy.x+2];
	s0_2_0 = G[4][xy.y+2][xy.x+0]; s0_2_1 = G[4][xy.y+2][xy.x+1];
	s0_2_2 = G[4][xy.y+2][xy.x+2]; s1_0_0 = G[5][xy.y+0][xy.x+0];
	s1_0_1 = G[5][xy.y+0][xy.x+1]; s1_0_2 = G[5][xy.y+0][xy.x+2];
	s1_1_0 = G[5][xy.y+1][xy.x+0]; s1_1_1 = G[5][xy.y+1][xy.x+1];
	s1_1_2 = G[5][xy.y+1][xy.x+2]; s1_2_0 = G[5][xy.y+2][xy.x+0];
	s1_2_1 = G[5][xy.y+2][xy.x+1]; s1_2_2 = G[5][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xFCBF090C, 0x07F8FE12, 0x0BE7E4E3, 0x07F70BFF);
	r1 = D(r1, s0_0_0, 0x0D16EACC, 0xCF1D103C, 0x25FF4110, 0x11F51D27);
	r2 = D(r2, s0_0_0, 0x0C13FF06, 0x3DF3ED2A, 0x06F60AF2, 0x2AC4F81F);
	r3 = D(r3, s0_0_0, 0x25D4C0B7, 0x20F4280D, 0x0010F2C1, 0x020404F7);
	r4 = D(r4, s0_0_0, 0x32E0278C, 0x3FCB0812, 0xFA1409BE, 0xF8E0FC30);
	r5 = D(r5, s0_0_0, 0x0BE91102, 0xC4D0EE1B, 0xFC0DF0FA, 0x09F6F811);
	r0 = D(r0, s0_0_1, 0x1EFCDD81, 0xE40BDCF7, 0x08DD19EF, 0x080A0EFC);
	r1 = D(r1, s0_0_1, 0x1A0445F2, 0xF844E306, 0x23B9D306, 0x051CE200);
	r2 = D(r2, s0_0_1, 0xFA001301, 0xF67B3B93, 0xE803F8FE, 0xD181BC81);
	r3 = D(r3, s0_0_1, 0x00D72BD0, 0x11130733, 0xFEF6FB17, 0x03FF06ED);
	r4 = D(r4, s0_0_1, 0xE7C4C5C1, 0xC7811FD6, 0x3A0FEF36, 0xDAE9CD7A);
	r5 = D(r5, s0_0_1, 0xE7DE2EF3, 0x23E849B8, 0xFE1B2CF5, 0xEBBB0217);
	r0 = D(r0, s0_0_2, 0xF1EA1610, 0x0203F9FB, 0xECF20C04, 0xFA0B0803);
	r1 = D(r1, s0_0_2, 0x04F1F5FD, 0x02E7FDF1, 0x01EC250B, 0xFA09EE01);
	r2 = D(r2, s0_0_2, 0x0CFC0C01, 0x181C08FA, 0x0C1736FC, 0x0A034C45);
	r3 = D(r3, s0_0_2, 0xD000110D, 0x1134A6F5, 0x04FA0CFF, 0xF802FAF9);
	r4 = D(r4, s0_0_2, 0x15EC39E5, 0x07F9F4E7, 0xEA021215, 0xE7F1F60D);
	r5 = D(r5, s0_0_2, 0xF2F8E904, 0xE52CFA18, 0x030209FA, 0xD80AF80E);
	r0 = D(r0, s0_1_0, 0xF51E1400, 0xE907F508, 0x3C0BF8F3, 0x05031A02);
	r1 = D(r1, s0_1_0, 0x09FFF21B, 0x26E61301, 0xC2F81DE9, 0xF118FBF4);
	r2 = D(r2, s0_1_0, 0xED00DE30, 0xD5FD0118, 0xE0FC0B29, 0xFE15FB13);
	r3 = D(r3, s0_1_0, 0xDF09B031, 0xF9FA4E0D, 0x4C0C2411, 0x030502F5);
	r4 = D(r4, s0_1_0, 0xF6121F23, 0x10D4F7ED, 0x1EFB08F4, 0x272B08F0);
	r5 = D(r5, s0_1_0, 0xD309F5F7, 0x07D3F90B, 0x15FF0100, 0xA700E4CB);
	r0 = D(r0, s0_1_1, 0x0AFA9ED6, 0x4C02F3F9, 0x9B528181, 0xDEFE81F0);
	r1 = D(r1, s0_1_1, 0xC8EC0D10, 0xCBFDD908, 0x2320BDD9, 0xD9E716E9);
	r2 = D(r2, s0_1_1, 0xFE193DF7, 0x300118F0, 0x52CC2AC3, 0xC30A43F4);
	r3 = D(r3, s0_1_1, 0x00D2E426, 0x01E8C2B9, 0xC5FDE309, 0xF5000E6C);
	r4 = D(r4, s0_1_1, 0xEF27E563, 0x14022BEB, 0xE3121924, 0x4927319C);
	r5 = D(r5, s0_1_1, 0x06DC1F2F, 0xD9D9F911, 0x0D16B70C, 0x48E4EBDA);
	r0 = D(r0, s0_1_2, 0xF9245614, 0xFC0017FD, 0xC103530A, 0x0AE50EFE);
	r1 = D(r1, s0_1_2, 0xF607FE0B, 0x2B0403EB, 0xF3EBF011, 0x0AF906F0);
	r2 = D(r2, s0_1_2, 0xEBFFEEFB, 0xC90BEEDE, 0xEFF8D910, 0x0818D211);
	r3 = D(r3, s0_1_2, 0x180C5F0D, 0xEB61E910, 0x0401F604, 0x0AFAE9F0);
	r4 = D(r4, s0_1_2, 0x012D0627, 0xBC02E545, 0x07EED0FF, 0x31DDC2DD);
	r5 = D(r5, s0_1_2, 0xF3F3C8F7, 0x200D0C0D, 0x01F43CFA, 0x4E1629FA);
	r0 = D(r0, s0_2_0, 0xE207E802, 0x0BFE0004, 0x4A0AE50A, 0xEA040702);
	r1 = D(r1, s0_2_0, 0xFC07F506, 0xE8FEF9FD, 0x1DFE340D, 0x09070B04);
	r2 = D(r2, s0_2_0, 0x220202F3, 0xFEF11510, 0x20F8FD07, 0x190E09FE);
	r3 = D(r3, s0_2_0, 0x3529F2D3, 0x130A27D6, 0xF102FFFD, 0x0400FFFB);
	r4 = D(r4, s0_2_0, 0xE70903EF, 0xFCE7F1F7, 0xDBF534E6, 0xE329DFE5);
	r5 = D(r5, s0_2_0, 0x0E0CFEFF, 0x0AF3F102, 0xFFF706FE, 0x29ED1403);
	r0 = D(r0, s0_2_1, 0x05E20F11, 0xE8FD0003, 0x04090212, 0x23F60E02);
	r1 = D(r1, s0_2_1, 0x0AFB09FD, 0x54E706F3, 0xDD19C4EC, 0xEE050509);
	r2 = D(r2, s0_2_1, 0xE3FBFAFA, 0xED06EB09, 0xE314F204, 0x030B0304);
	r3 = D(r3, s0_2_1, 0x08E0E70F, 0xD9FCC6FC, 0x09FF02FC, 0xE6F8F7E8);
	r4 = D(r4, s0_2_1, 0x290DD1EB, 0x05E1E1F1, 0x20F0E5F2, 0x91D63FEE);
	r5 = D(r5, s0_2_1, 0xFB08FADD, 0x46F00D01, 0x16050409, 0xCF07030B);
	r0 = D(r0, s0_2_2, 0xFFF6140F, 0xFBFD0202, 0x160C0909, 0xFBFBFA04);
	r1 = D(r1, s0_2_2, 0x0FF90502, 0xDFE4F9F4, 0x01060700, 0xFDEDFBFA);
	r2 = D(r2, s0_2_2, 0x0E01F7FE, 0x24EBFF0D, 0x07F30D0F, 0x1401FE04);
	r3 = D(r3, s0_2_2, 0xE8E30C0E, 0x021F1AFB, 0xF7FEFF01, 0x0F0509FC);
	r4 = D(r4, s0_2_2, 0x05082607, 0x20E81E1B, 0xE400E7F7, 0xB6F0EEF7);
	r5 = D(r5, s0_2_2, 0x1D0DED02, 0xD6F80202, 0xD7F8FB03, 0xF5FDF404);
	r0 = D(r0, s1_0_0, 0xFDE71709, 0xF501FF0E, 0x01F7F712, 0x01FA0204);
	r1 = D(r1, s1_0_0, 0xDA3A0915, 0xEC0FF711, 0xE633D40A, 0x00110BE1);
	r2 = D(r2, s1_0_0, 0x0103030C, 0xFFF500F2, 0x030213FA, 0x1A1000FD);
	r3 = D(r3, s1_0_0, 0xF60DEA31, 0xE1E109FB, 0xFEFDFCFB, 0x04FF03FF);
	r4 = D(r4, s1_0_0, 0xEDF00201, 0x36E021FF, 0x12F0FFF9, 0xF50BF810);
	r5 = D(r5, s1_0_0, 0xD6FBEFF9, 0x497FB804, 0x070F01F6, 0x041507FE);
	r0 = D(r0, s1_0_1, 0x06F6F603, 0x0900030E, 0x0B0F010E, 0x02FA0105);
	r1 = D(r1, s1_0_1, 0xFE03D3F9, 0x1B282810, 0x29CFE410, 0xEADE7F13);
	r2 = D(r2, s1_0_1, 0x04F6FF01, 0x07EA0DFF, 0x0E090A03, 0xF0D0081D);
	r3 = D(r3, s1_0_1, 0xFBEAF0E7, 0x12E1F9EC, 0x000402FF, 0xFFFDF802);
	r4 = D(r4, s1_0_1, 0x2A0BD80B, 0xFCE6EAF3, 0xC2D00EF2, 0xD4BE15F3);
	r5 = D(r5, s1_0_1, 0x0BF2E6EF, 0xC97F8113, 0x10F8F907, 0x1815CB29);
	r0 = D(r0, s1_0_2, 0xF624EEF0, 0xFB0306FF, 0xFEFDFA00, 0xFA040200);
	r1 = D(r1, s1_0_2, 0x16F104FF, 0xE2FBDD10, 0xDB0BF5F7, 0x190F090B);
	r2 = D(r2, s1_0_2, 0xFC0BFDFF, 0xF809D70B, 0xF6F9F7FD, 0xD4DE090E);
	r3 = D(r3, s1_0_2, 0xF4FA16FA, 0xE60D09FE, 0x01000000, 0xFC010203);
	r4 = D(r4, s1_0_2, 0xC01B1DF5, 0xE50AD615, 0x0C0AF8F6, 0x24F2E400);
	r5 = D(r5, s1_0_2, 0x05EAF302, 0xF0489DF3, 0xEEEFF0FC, 0xDAED02FA);
	r0 = D(r0, s1_1_0, 0x0FE9EF17, 0xEFF701FD, 0x0C10F8E2, 0xFA00F5FF);
	r1 = D(r1, s1_1_0, 0x81DAF50C, 0xD0FBFBFA, 0x81C806E3, 0xB9CB1FCE);
	r2 = D(r2, s1_1_0, 0x1209ECD8, 0xE105FAA4, 0xE7F9DA16, 0xB4F71AEE);
	r3 = D(r3, s1_1_0, 0xEF9B7F15, 0x06FDF1F5, 0x0F040849, 0xF6FF01FD);
	r4 = D(r4, s1_1_0, 0x152A3412, 0xCCF408E7, 0xEAFE17FA, 0x010E1D01);
	r5 = D(r5, s1_1_0, 0x0716F20E, 0xBA1B1C2D, 0xFF190911, 0xAAFC1F81);
	r0 = D(r0, s1_1_1, 0x110AFF2B, 0xCCF40FEF, 0x11484F1F, 0x10FB05EF);
	r1 = D(r1, s1_1_1, 0x81130410, 0xF42E21EB, 0x75CE16E3, 0x81112EE3);
	r2 = D(r2, s1_1_1, 0x1AF6C1F7, 0x4108ECFE, 0x0306EFFA, 0xD4817FA3);
	r3 = D(r3, s1_1_1, 0x5CE20E08, 0x0BC6E4AC, 0xF007F81F, 0xF90406F0);
	r4 = D(r4, s1_1_1, 0xD8CDD82C, 0x0FAF380E, 0x27FFFF01, 0x28CCF708);
	r5 = D(r5, s1_1_1, 0x2CE00C0E, 0x7681DCEC, 0xEBFD06DB, 0x40EEB098);
	r0 = D(r0, s1_1_2, 0xFA34F41B, 0x15F6F4FC, 0x290EF616, 0xF5F90AFE);
	r1 = D(r1, s1_1_2, 0x0FEF0501, 0xAD0EF500, 0xB53AE318, 0xF208E1DD);
	r2 = D(r2, s1_1_2, 0x04FCFEFA, 0xF5C2E410, 0xFEFA1001, 0x51042335);
	r3 = D(r3, s1_1_2, 0x15FADBF1, 0x1A7F0FEE, 0xFEF4FE01, 0x0009FCF2);
	r4 = D(r4, s1_1_2, 0xEB08D90F, 0x09075AEC, 0x02E827FD, 0xFF123004);
	r5 = D(r5, s1_1_2, 0xF9F8190A, 0xD322DC0A, 0x39CF07FC, 0x1C0E2DDC);
	r0 = D(r0, s1_2_0, 0x811500FA, 0x00010502, 0x6AF700FE, 0x04F61102);
	r1 = D(r1, s1_2_0, 0x031C0504, 0xD6F01AFA, 0x7FF00911, 0x3407DC02);
	r2 = D(r2, s1_2_0, 0x58FAF0D6, 0xEC1A063F, 0x17FA1F04, 0x0BE3D408);
	r3 = D(r3, s1_2_0, 0xB8CD3DF7, 0x1B0AEFF7, 0xC7F907F6, 0xF702FCF9);
	r4 = D(r4, s1_2_0, 0x8FF805F7, 0x25170FEF, 0x7FED070D, 0x0AB827F8);
	r5 = D(r5, s1_2_0, 0x07FFFF11, 0x04FF00D6, 0xEDFA0DF3, 0x361F2610);
	r0 = D(r0, s1_2_1, 0xC7EB4DDC, 0x0100FE04, 0x810AACF3, 0x05C2080D);
	r1 = D(r1, s1_2_1, 0x400B15F1, 0x51BCF101, 0x870F4E08, 0xBA01F30F);
	r2 = D(r2, s1_2_1, 0x81E71D09, 0x7F03D2F7, 0x8122ECF4, 0x47001605);
	r3 = D(r3, s1_2_1, 0xA040FB00, 0x57581EE5, 0x1B10FDFD, 0xFC0A0CD6);
	r4 = D(r4, s1_2_1, 0xE7F03AC2, 0x7FC50DED, 0x7FFC2028, 0x9A1CE406);
	r5 = D(r5, s1_2_1, 0x811FECF9, 0xA902BE01, 0x6FFC111C, 0x81E9D749);
	r0 = D(r0, s1_2_2, 0x25F40D0A, 0x00080602, 0xB6CEE3E9, 0x02ED0503);
	r1 = D(r1, s1_2_2, 0xFDFDF500, 0xCEFEFB01, 0x391002FA, 0x29E20301);
	r2 = D(r2, s1_2_2, 0xE211F8FE, 0x24C215F8, 0x0206070C, 0xFD12EEFC);
	r3 = D(r3, s1_2_2, 0x3EE40F0F, 0x817F8103, 0xEA03FD01, 0xF20FF7FC);
	r4 = D(r4, s1_2_2, 0x3F370AFE, 0xE8F1F610, 0xE539D904, 0x3320C913);
	r5 = D(r5, s1_2_2, 0xC1170EFF, 0x37050003, 0xBC0F0804, 0x0BF2FB0A);
	f0 = vec4(r0) * 6.2000124e-05;
	f0 = clamp(f0, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 0), f0);
	f1 = vec4(r1) * 6.2000124e-05;
	f1 = clamp(f1, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 0), f1);
	f2 = vec4(r2) * 6.2000124e-05;
	f2 = clamp(f2, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 0), f2);
	f3 = vec4(r3) * 6.2000124e-05;
	f3 = clamp(f3, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 1), f3);
	f4 = vec4(r4) * 6.2000124e-05;
	f4 = clamp(f4, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 1), f4);
	f5 = vec4(r5) * 6.2000124e-05;
	f5 = clamp(f5, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 1), f5);
}

//!DESC [CuNNy_4x24_SOFT_vk] -conv2
//!HOOK LUMA
//!COMPUTE 24 16 8 8
//!BIND conv1
//!BIND LUMA
//!SAVE conv2
//!WIDTH LUMA.w 3 *
//!HEIGHT LUMA.h 2 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w 1.200 * > OUTPUT.h LUMA.h 1.200 * > *
#extension GL_EXT_spirv_intrinsics : require
#define l0(x, y) (conv1_mul * texelFetch(conv1_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(0, 0), 0))
#define l1(x, y) (conv1_mul * texelFetch(conv1_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(1, 0), 0))
#define l2(x, y) (conv1_mul * texelFetch(conv1_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(2, 0), 0))
#define l3(x, y) (conv1_mul * texelFetch(conv1_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(0, 1), 0))
#define l4(x, y) (conv1_mul * texelFetch(conv1_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(1, 1), 0))
#define l5(x, y) (conv1_mul * texelFetch(conv1_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(2, 1), 0))
spirv_instruction (extensions = ["SPV_KHR_integer_dot_product"], capabilities = [6019, 6018], id = 4450)
int dp4(int a, int b, spirv_literal int fmt);
#define D(r, s, a, b, c, d) r + ivec4(dp4(s, a, 0), dp4(s, b, 0), dp4(s, c, 0), dp4(s, d, 0))
shared int G[6][10][10];
void hook() {
	ivec2 xy = ivec2(gl_LocalInvocationID.xy);
	ivec2 pos = ivec2(gl_WorkGroupID.xy) * ivec2(8, 8) + xy;
	ivec2 opos = pos * ivec2(3, 2);
	ivec2 sz = ivec2(LUMA_size) - ivec2(1);
	for (int y = 0; y < 10; y += 8) {
		int ay = xy.y + y;
		if (ay >= 10) break;
		for (int x = 0; x < 10; x += 8) {
			int ax = xy.x + x;
			if (ax >= 10) break;
			vec4 v0 = l0(x - 1, y - 1);
			vec4 v1 = l1(x - 1, y - 1);
			vec4 v2 = l2(x - 1, y - 1);
			vec4 v3 = l3(x - 1, y - 1);
			vec4 v4 = l4(x - 1, y - 1);
			vec4 v5 = l5(x - 1, y - 1);
			G[0][ay][ax] = int(packSnorm4x8(v0));
			G[1][ay][ax] = int(packSnorm4x8(v1));
			G[2][ay][ax] = int(packSnorm4x8(v2));
			G[3][ay][ax] = int(packSnorm4x8(v3));
			G[4][ay][ax] = int(packSnorm4x8(v4));
			G[5][ay][ax] = int(packSnorm4x8(v5));
		}
	}
	barrier();
	int s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;
	ivec4 r0, r1, r2, r3, r4, r5;
	vec4 f0, f1, f2, f3, f4, f5;
	r0 = ivec4(0); r1 = ivec4(0); r2 = ivec4(0); r3 = ivec4(0); r4 = ivec4(0); r5 = ivec4(0);
	s0_0_0 = G[0][xy.y+0][xy.x+0]; s0_0_1 = G[0][xy.y+0][xy.x+1];
	s0_0_2 = G[0][xy.y+0][xy.x+2]; s0_1_0 = G[0][xy.y+1][xy.x+0];
	s0_1_1 = G[0][xy.y+1][xy.x+1]; s0_1_2 = G[0][xy.y+1][xy.x+2];
	s0_2_0 = G[0][xy.y+2][xy.x+0]; s0_2_1 = G[0][xy.y+2][xy.x+1];
	s0_2_2 = G[0][xy.y+2][xy.x+2]; s1_0_0 = G[1][xy.y+0][xy.x+0];
	s1_0_1 = G[1][xy.y+0][xy.x+1]; s1_0_2 = G[1][xy.y+0][xy.x+2];
	s1_1_0 = G[1][xy.y+1][xy.x+0]; s1_1_1 = G[1][xy.y+1][xy.x+1];
	s1_1_2 = G[1][xy.y+1][xy.x+2]; s1_2_0 = G[1][xy.y+2][xy.x+0];
	s1_2_1 = G[1][xy.y+2][xy.x+1]; s1_2_2 = G[1][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xD30BEF30, 0xD6BCD705, 0x8BE5F3F5, 0x47980417);
	r1 = D(r1, s0_0_0, 0x0C07EFE8, 0x01CF0402, 0x35D60328, 0xEBFDF8F6);
	r2 = D(r2, s0_0_0, 0xB800F3F9, 0x0E240221, 0x0817F702, 0xF8FDFDFB);
	r3 = D(r3, s0_0_0, 0xEFE1FD0C, 0xFCEBFE00, 0x091D010C, 0xFD0D0302);
	r4 = D(r4, s0_0_0, 0xEAF4FEFE, 0x01FFEC00, 0xDF1B0A0F, 0xFF0DF7E8);
	r5 = D(r5, s0_0_0, 0xFDEFFE0F, 0x816BFED9, 0xC725FAD9, 0xFDFCF709);
	r0 = D(r0, s0_0_1, 0xDD1D0C1F, 0xCC0D2247, 0x81DD1781, 0xCA37F4FA);
	r1 = D(r1, s0_0_1, 0x3FE51411, 0xEDE0F6FA, 0x817F021B, 0xFBFC03FF);
	r2 = D(r2, s0_0_1, 0x7F0CE6D8, 0xFB0BFB0C, 0xC80C0C26, 0x03F301F9);
	r3 = D(r3, s0_0_1, 0x06F4F6F9, 0xF9110105, 0xE53AFB03, 0x07C6FDFB);
	r4 = D(r4, s0_0_1, 0xC247FD06, 0x541FDEF7, 0x063D0002, 0x16F30105);
	r5 = D(r5, s0_0_1, 0x130AFC03, 0x36DB0413, 0x1D0CF902, 0xE018F8FD);
	r0 = D(r0, s0_0_2, 0xD300E8ED, 0x27F0FBF0, 0xF825EEEF, 0x29E7F016);
	r1 = D(r1, s0_0_2, 0x02F40108, 0xEFFB0608, 0xDA17EFF1, 0xE8ECF2FB);
	r2 = D(r2, s0_0_2, 0xA802F3F7, 0x04FDFD0D, 0xF4F0020E, 0x0503FEFE);
	r3 = D(r3, s0_0_2, 0x1B0FF409, 0x02F601FE, 0x0C13020A, 0x08020102);
	r4 = D(r4, s0_0_2, 0xD2130306, 0x120DDFFD, 0x0303FD06, 0x1BFEFF05);
	r5 = D(r5, s0_0_2, 0xFD00FE01, 0x060AFAFC, 0xF7040203, 0x0806F804);
	r0 = D(r0, s0_1_0, 0xFB18F6E8, 0xE828F105, 0xFB9C2CCE, 0x296EC743);
	r1 = D(r1, s0_1_0, 0x0B160306, 0x09FD09F6, 0x0EF2E90B, 0x0AE10715);
	r2 = D(r2, s0_1_0, 0x87FE2F2E, 0x20B3004F, 0xF6D5E781, 0x00F11102);
	r3 = D(r3, s0_1_0, 0x19CD00F3, 0xFE030501, 0xD42DF5C5, 0x01F5FA0E);
	r4 = D(r4, s0_1_0, 0xF42404F0, 0xF2E4DF25, 0xDF1316C6, 0xFE0F0611);
	r5 = D(r5, s0_1_0, 0xFF04FAF9, 0x8158C8BA, 0xD1F50103, 0x1BE809C1);
	r0 = D(r0, s0_1_1, 0xEC0A3A17, 0x46D40225, 0xECFE14E3, 0xF45E3E0A);
	r1 = D(r1, s0_1_1, 0x16F1960E, 0xF30A1907, 0x0CE9B71A, 0x11000DEA);
	r2 = D(r2, s0_1_1, 0x1815AA05, 0xB133F60B, 0x8149642F, 0x0FEFF900);
	r3 = D(r3, s0_1_1, 0x0EFD190B, 0x0DFDFE02, 0x811D030C, 0x12F20D01);
	r4 = D(r4, s0_1_1, 0x812F20F6, 0x0FE6EA1D, 0xD204F0FF, 0x0EDAE61A);
	r5 = D(r5, s0_1_1, 0x030869FB, 0x66ECD107, 0x23E001FA, 0xB80C17EF);
	r0 = D(r0, s0_1_2, 0xE7FDECFD, 0xEDF9E01F, 0x0B1AF8D9, 0x1F22D701);
	r1 = D(r1, s0_1_2, 0xEDF50813, 0x11031FFC, 0xD6FDF3F0, 0xE11731E8);
	r2 = D(r2, s0_1_2, 0xB4ED2B12, 0x1B12F3FD, 0xE4F90F0D, 0xFCFBF7FD);
	r3 = D(r3, s0_1_2, 0xFAFCF706, 0xFB02FB02, 0xF3FCEF17, 0x02000007);
	r4 = D(r4, s0_1_2, 0xC7E52406, 0x04F7B8FE, 0x05F60404, 0x0B00E708);
	r5 = D(r5, s0_1_2, 0x03020002, 0xF8EEDD0B, 0xF6F6080E, 0x1205E7FC);
	r0 = D(r0, s0_2_0, 0x05EADB0E, 0x0A120A12, 0xFD16EA00, 0x15171119);
	r1 = D(r1, s0_2_0, 0x0319E60A, 0x05FFF907, 0x0A0C050C, 0x04F8FCF1);
	r2 = D(r2, s0_2_0, 0x00071B09, 0xFBDC27C5, 0xF20309FC, 0x0201FE02);
	r3 = D(r3, s0_2_0, 0x0103E60B, 0xFF000201, 0x021A0203, 0x040506FF);
	r4 = D(r4, s0_2_0, 0xF61D0719, 0xF8FDD4EF, 0xFFFEDBF5, 0xFF14EBF7);
	r5 = D(r5, s0_2_0, 0x0103FE03, 0xDD21E0F7, 0xF7EA1EEE, 0x03FAF700);
	r0 = D(r0, s0_2_1, 0xF4FD16F5, 0x10F8E317, 0xFB270E0A, 0x1DD5DDA8);
	r1 = D(r1, s0_2_1, 0x13F9D8FE, 0x120FEF14, 0x090BFE11, 0x0AFBE2F5);
	r2 = D(r2, s0_2_1, 0xEE1AFBED, 0xEFE90DD3, 0xDB0BD909, 0x03FBF803);
	r3 = D(r3, s0_2_1, 0x00FCE10E, 0x0106E709, 0xF716051A, 0x060017FC);
	r4 = D(r4, s0_2_1, 0x0821DB17, 0x0A161F20, 0x01FB5407, 0x10FAEC09);
	r5 = D(r5, s0_2_1, 0x0001E904, 0x19051221, 0xFB0CE403, 0xF90006F1);
	r0 = D(r0, s0_2_2, 0x0101FD05, 0xF603F305, 0x0807F5EE, 0xFBF595F1);
	r1 = D(r1, s0_2_2, 0x010C15FA, 0x00FAFF0B, 0xFAF61DFC, 0xF20418E7);
	r2 = D(r2, s0_2_2, 0xF6020D13, 0xEFFBF2F0, 0xE703040B, 0x04020201);
	r3 = D(r3, s0_2_2, 0x05F30804, 0x00000001, 0x0A060710, 0xFF03F204);
	r4 = D(r4, s0_2_2, 0x00FA0A0B, 0x1007C511, 0x04FE0307, 0x00020806);
	r5 = D(r5, s0_2_2, 0x01FFFE02, 0xFE07EC02, 0xFE05F60A, 0x08FFE902);
	r0 = D(r0, s1_0_0, 0xA708100F, 0xBFFDCA27, 0x0708E803, 0x1AEFF7F6);
	r1 = D(r1, s1_0_0, 0x02F40416, 0x0600F5FE, 0xF80FFCFD, 0xF6061101);
	r2 = D(r2, s1_0_0, 0x1B0F1FF5, 0xFA0BF7FE, 0xF404FD04, 0x05FE00FE);
	r3 = D(r3, s1_0_0, 0x0C07F5ED, 0x00010000, 0x0AF91512, 0xFF0407FB);
	r4 = D(r4, s1_0_0, 0x03040D09, 0xF30D02DF, 0xF00502FF, 0x01F5120D);
	r5 = D(r5, s1_0_0, 0xFF010301, 0xFF15F60A, 0x15F608FD, 0xFE0402FF);
	r0 = D(r0, s1_0_1, 0x812614F7, 0xFDEA121E, 0xFE0C21FB, 0x1FF00C01);
	r1 = D(r1, s1_0_1, 0xC8FDF5FE, 0x08FAF508, 0x020F12F0, 0x07FD1511);
	r2 = D(r2, s1_0_1, 0xEA30ED03, 0xF5020606, 0x17FBE8FD, 0x04FB0203);
	r3 = D(r3, s1_0_1, 0x0A05FCFB, 0x02000801, 0xF5F9DFDF, 0x0E080E01);
	r4 = D(r4, s1_0_1, 0xF9FB15FE, 0x1A30FDE3, 0xF110FE0D, 0x0DF90D00);
	r5 = D(r5, s1_0_1, 0x11040A02, 0xF20A250D, 0x0DFFE6E5, 0x090B0FF8);
	r0 = D(r0, s1_0_2, 0xA909F7FF, 0x02EE9FE2, 0xFE0BFF11, 0x18DDC000);
	r1 = D(r1, s1_0_2, 0xC8FEFEFE, 0xFCFAF509, 0xF616E8EA, 0xF2000103);
	r2 = D(r2, s1_0_2, 0xCA1C14DC, 0x1DFF19FE, 0xF50600FE, 0x05FB0004);
	r3 = D(r3, s1_0_2, 0x1DFA1302, 0x02FF0600, 0x15F30302, 0x13FF0E05);
	r4 = D(r4, s1_0_2, 0xFF12FF09, 0x17F500DB, 0xFB050207, 0x11FD0207);
	r5 = D(r5, s1_0_2, 0x0401FBFA, 0xFD06FDFF, 0xFF101801, 0x0B020C00);
	r0 = D(r0, s1_1_0, 0xC80DFE00, 0xFE0001F4, 0x94141B01, 0xFCF5F012);
	r1 = D(r1, s1_1_0, 0xD9021207, 0xF40AF2FA, 0x16F7F503, 0x0EFFDC11);
	r2 = D(r2, s1_1_0, 0xF0F13AE2, 0xF304DB1F, 0xE208F30D, 0xFAFFF5FC);
	r3 = D(r3, s1_1_0, 0x0B05FBF5, 0x05FF0103, 0x0DFD3B0F, 0xF302FC01);
	r4 = D(r4, s1_1_0, 0x07040104, 0xED0903C5, 0xFA0837EF, 0xFCE8F30F);
	r5 = D(r5, s1_1_0, 0x00FF05FE, 0xF0C186E6, 0xBC00381F, 0xFAFFFFFD);
	r0 = D(r0, s1_1_1, 0xE80FD4EE, 0xD9EAEF25, 0x62E239EE, 0xE4EAF208);
	r1 = D(r1, s1_1_1, 0xF1FBEB20, 0x01F204F0, 0xE9F1FAFB, 0xDEE5F80F);
	r2 = D(r2, s1_1_1, 0xC522FA2D, 0xC70121EC, 0x4EE935E8, 0xFCF9F604);
	r3 = D(r3, s1_1_1, 0x0409FE04, 0x02FE070F, 0x02030086, 0xF5FFB0F1);
	r4 = D(r4, s1_1_1, 0xF100F70D, 0xF330C8F5, 0x2000E9CB, 0xF5F50300);
	r5 = D(r5, s1_1_1, 0x05040FF2, 0xBBDACAFB, 0xE6F4D238, 0x050010E0);
	r0 = D(r0, s1_1_2, 0x1F060208, 0x05E705B7, 0x2B2A0F1D, 0x0835D8D9);
	r1 = D(r1, s1_1_2, 0xFBEC0116, 0xFDFDF3F1, 0x39010B97, 0x9E0219FA);
	r2 = D(r2, s1_1_2, 0x3AF018CB, 0xF6F2E5F8, 0xE0FFF4F6, 0xF80400FE);
	r3 = D(r3, s1_1_2, 0xFC0AFCE8, 0x070105FF, 0xE2E2DFF8, 0xF8FA12F7);
	r4 = D(r4, s1_1_2, 0x0D1105FB, 0x97FD0AED, 0x1909F9EB, 0xF8FEFE11);
	r5 = D(r5, s1_1_2, 0xF40004FE, 0xEAF002EC, 0xE1FAFAFC, 0x10FE1309);
	r0 = D(r0, s1_2_0, 0xE4EEF01E, 0xF9F9FA09, 0x3411FA1D, 0x81F4DD3B);
	r1 = D(r1, s1_2_0, 0xF8FDFF07, 0x06FBF8FD, 0xF80100FC, 0x0002ED0D);
	r2 = D(r2, s1_2_0, 0x1F160816, 0xF218090B, 0xF2081BEF, 0xFEFDFE03);
	r3 = D(r3, s1_2_0, 0x13FA0403, 0x02010004, 0x090206FF, 0xF7FEFFFB);
	r4 = D(r4, s1_2_0, 0x09040CFF, 0x06FA0DF4, 0xFA09F8FF, 0xFE01F90F);
	r5 = D(r5, s1_2_0, 0x01000000, 0x43FF2CF3, 0x2AD91C0F, 0xFD000803);
	r0 = D(r0, s1_2_1, 0xBC2C0F00, 0xD81EFF0B, 0x13EE1281, 0xE1061CCB);
	r1 = D(r1, s1_2_1, 0xA0F9E00F, 0xE6ECE7F1, 0x0C06F80E, 0xF8060523);
	r2 = D(r2, s1_2_1, 0xEA2E16BA, 0x14E93181, 0x0537433B, 0xF20200F6);
	r3 = D(r3, s1_2_1, 0xF8FCFAF3, 0x0605FF12, 0x0B0A19EF, 0xEDFC01E7);
	r4 = D(r4, s1_2_1, 0x1611FC24, 0x03F50CD0, 0x15FCF7D7, 0xEFEEFE12);
	r5 = D(r5, s1_2_1, 0x00FFFA01, 0xE0F1D9DB, 0xC3EFFF1E, 0xF104FA2F);
	r0 = D(r0, s1_2_2, 0xF70202EE, 0x5321FF50, 0xBED20481, 0x15FFB097);
	r1 = D(r1, s1_2_2, 0xBD130D1C, 0xFCFAF1E6, 0xF414F8FB, 0xEC180BEC);
	r2 = D(r2, s1_2_2, 0x2C260E11, 0x0AE92204, 0xEC1D11DB, 0x04FBFB01);
	r3 = D(r3, s1_2_2, 0x0507F7E2, 0xFE020507, 0x2FF1E818, 0xFDF104FD);
	r4 = D(r4, s1_2_2, 0xE51AF90C, 0x1DB4EBFA, 0x08070204, 0x10020400);
	r5 = D(r5, s1_2_2, 0x0001FDF9, 0x0C05FD1E, 0xE4050407, 0x12F500F7);
	s0_0_0 = G[2][xy.y+0][xy.x+0]; s0_0_1 = G[2][xy.y+0][xy.x+1];
	s0_0_2 = G[2][xy.y+0][xy.x+2]; s0_1_0 = G[2][xy.y+1][xy.x+0];
	s0_1_1 = G[2][xy.y+1][xy.x+1]; s0_1_2 = G[2][xy.y+1][xy.x+2];
	s0_2_0 = G[2][xy.y+2][xy.x+0]; s0_2_1 = G[2][xy.y+2][xy.x+1];
	s0_2_2 = G[2][xy.y+2][xy.x+2]; s1_0_0 = G[3][xy.y+0][xy.x+0];
	s1_0_1 = G[3][xy.y+0][xy.x+1]; s1_0_2 = G[3][xy.y+0][xy.x+2];
	s1_1_0 = G[3][xy.y+1][xy.x+0]; s1_1_1 = G[3][xy.y+1][xy.x+1];
	s1_1_2 = G[3][xy.y+1][xy.x+2]; s1_2_0 = G[3][xy.y+2][xy.x+0];
	s1_2_1 = G[3][xy.y+2][xy.x+1]; s1_2_2 = G[3][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xF1250DF9, 0x0ECFED14, 0x0EF00C03, 0xFCFEC408);
	r1 = D(r1, s0_0_0, 0x12F2DF01, 0xF0F7FF02, 0x0F0DE60A, 0x04F2FB04);
	r2 = D(r2, s0_0_0, 0x08FD05F2, 0xFB060C1E, 0x05EF00FB, 0x06FCFFFD);
	r3 = D(r3, s0_0_0, 0xFBFE0703, 0xFFFBFD02, 0xFF11D800, 0x04FF0803);
	r4 = D(r4, s0_0_0, 0x00F8F905, 0x0F11FD01, 0xEF1411F3, 0xF8F1FA09);
	r5 = D(r5, s0_0_0, 0x040103FE, 0x1BD9DE2B, 0xC5EFF6EA, 0x120DF4F5);
	r0 = D(r0, s0_0_1, 0xC1F3F5CF, 0xDA02E806, 0x17F50311, 0xFFCFE916);
	r1 = D(r1, s0_0_1, 0x111B04DA, 0xFB0B02E9, 0x340FE12C, 0x14EFF41C);
	r2 = D(r2, s0_0_1, 0x2A2E1D10, 0x0DED0609, 0x0ACB13FC, 0x01050109);
	r3 = D(r3, s0_0_1, 0x04D90300, 0x01FE03FF, 0xFAED0BED, 0x06EFFEFE);
	r4 = D(r4, s0_0_1, 0xF6110007, 0xDBB2FE24, 0xFB270D81, 0xF90301E1);
	r5 = D(r5, s0_0_1, 0x070301F9, 0x0D0EED11, 0x1EE61AC9, 0x00E5F515);
	r0 = D(r0, s0_0_2, 0x1919FAD9, 0x2F25B719, 0xFEFF15F0, 0x24E9C71D);
	r1 = D(r1, s0_0_2, 0xE602FF18, 0x010FFE11, 0xE112F6E1, 0xCCF003F1);
	r2 = D(r2, s0_0_2, 0xF81B000A, 0xF5F80AFE, 0xF5F905FB, 0x01030005);
	r3 = D(r3, s0_0_2, 0x04EEFC1B, 0xFDFF0307, 0x0BE40791, 0x0203FE0D);
	r4 = D(r4, s0_0_2, 0xFB030BDF, 0x1202FCFA, 0xFD0D00F5, 0xFEF80202);
	r5 = D(r5, s0_0_2, 0x010002F1, 0x0E0DFB0B, 0xFFE70C0E, 0xFDFF00C5);
	r0 = D(r0, s0_1_0, 0xFBB819FF, 0xF9C7ED0F, 0xFCC805D2, 0xECFFCA09);
	r1 = D(r1, s0_1_0, 0x071002FB, 0x17F6E206, 0x0DEEF0FF, 0xF9F7F607);
	r2 = D(r2, s0_1_0, 0xFF0D02F0, 0x07F8F006, 0xFEF8EA09, 0xFCFEFDFE);
	r3 = D(r3, s0_1_0, 0x0402F8F8, 0x0100FF02, 0x0B0A82FC, 0x08060103);
	r4 = D(r4, s0_1_0, 0x07030DF6, 0xF20D000C, 0x220A01FA, 0x1C1FF7FC);
	r5 = D(r5, s0_1_0, 0xFE030201, 0xF7CDFF81, 0x3FCCF081, 0xEBFB0F03);
	r0 = D(r0, s0_1_1, 0x14060CF7, 0x8181C921, 0x2F2D3B81, 0xC8A6F4D9);
	r1 = D(r1, s0_1_1, 0xCED5EB06, 0x06410BF6, 0xD8C7A912, 0x0C02CE06);
	r2 = D(r2, s0_1_1, 0xE0F3D904, 0xEFE5FBD2, 0xFEC70CEC, 0xEFEE041A);
	r3 = D(r3, s0_1_1, 0x1314F60E, 0x0023F603, 0x042409C9, 0xFFF40014);
	r4 = D(r4, s0_1_1, 0x34221005, 0x104311E0, 0x111000FB, 0x040FF413);
	r5 = D(r5, s0_1_1, 0xFAF803FB, 0xFFE11F7F, 0xFBDCF30C, 0x1EFB0802);
	r0 = D(r0, s0_1_2, 0x1608EBD1, 0x2AE6E710, 0x13E6FA22, 0x5EE1C0EC);
	r1 = D(r1, s0_1_2, 0xE2F2FCEF, 0xF712FFEB, 0x350AC8FE, 0x9001F4D8);
	r2 = D(r2, s0_1_2, 0xF8F807EF, 0xEE09118C, 0x181D01CC, 0xFCFF0200);
	r3 = D(r3, s0_1_2, 0xF6FE09FE, 0x01060210, 0xFE0CE301, 0xDF020FFC);
	r4 = D(r4, s0_1_2, 0xFEED06F2, 0x2EF9E5FD, 0x02FC0612, 0xF8FC0409);
	r5 = D(r5, s0_1_2, 0x0201FCF9, 0xF7EDF1F9, 0x01FB0DE3, 0xE0F90108);
	r0 = D(r0, s0_2_0, 0xFAFA020C, 0xF410F103, 0x0C0B0BFA, 0xCD1F8109);
	r1 = D(r1, s0_2_0, 0xF015FC03, 0xEFFF0201, 0x020704FF, 0x0CE8FFFA);
	r2 = D(r2, s0_2_0, 0xFBED10FD, 0x12E5FAF9, 0xFEF7DE09, 0x0701FF03);
	r3 = D(r3, s0_2_0, 0x08FDF0FD, 0xFE0200FF, 0x1009F9FD, 0xF7040601);
	r4 = D(r4, s0_2_0, 0xF7150200, 0xFE010A03, 0xFAFD0404, 0xF506FEFF);
	r5 = D(r5, s0_2_0, 0x0000FF00, 0x5612F1E2, 0xFFE906FF, 0xFBF7FC04);
	r0 = D(r0, s0_2_1, 0x17FFF2F7, 0xECE1D108, 0x0F010500, 0xE4C78124);
	r1 = D(r1, s0_2_1, 0xCFEB1B04, 0x010B07FF, 0x0AF90D05, 0x1214DB02);
	r2 = D(r2, s0_2_1, 0xEA020F17, 0x212B0104, 0x3401FCEB, 0x07FBFF02);
	r3 = D(r3, s0_2_1, 0xF400F801, 0xFD0304FF, 0xF1031500, 0x07FD0303);
	r4 = D(r4, s0_2_1, 0xEA02FEFB, 0x061110F3, 0x0A010AFF, 0xE4FE0808);
	r5 = D(r5, s0_2_1, 0xFF0502FE, 0x0EF10EFD, 0xF20511F9, 0x0FF9F9FF);
	r0 = D(r0, s0_2_2, 0xE70BFB06, 0x20F5ED0A, 0xF0F01413, 0x471CABC4);
	r1 = D(r1, s0_2_2, 0xD601F9F7, 0xE00300FF, 0x2E08E4FE, 0xEEFAE8FC);
	r2 = D(r2, s0_2_2, 0x00F809F4, 0xEC06F6E8, 0x0506FF05, 0xFE010200);
	r3 = D(r3, s0_2_2, 0x11F703F8, 0x0900FFFC, 0xF30004F8, 0xFBFF0109);
	r4 = D(r4, s0_2_2, 0x0607FBFC, 0xEDF908F0, 0x0406FFF7, 0x0005FDFA);
	r5 = D(r5, s0_2_2, 0xF8020200, 0xF20407F2, 0xF4FE0D00, 0xFA02F908);
	r0 = D(r0, s1_0_0, 0x2FF314FB, 0x91FFE8EB, 0x81034006, 0xB009F013);
	r1 = D(r1, s1_0_0, 0x05F8080B, 0x1D0001F8, 0xE4FFEFFD, 0x10FA07FB);
	r2 = D(r2, s1_0_0, 0xFEFCE11A, 0x0906FCF5, 0xE9FA190D, 0x4C05FAFF);
	r3 = D(r3, s1_0_0, 0xED07050A, 0x01000101, 0x0EF3F106, 0x0101F9FD);
	r4 = D(r4, s1_0_0, 0x01F80609, 0x220D0C10, 0x8104EFFE, 0xE0F9F303);
	r5 = D(r5, s1_0_0, 0xF4FC0C03, 0x81CD0A1C, 0x23F30B08, 0x2906F7FB);
	r0 = D(r0, s1_0_1, 0x21F91FDE, 0xC8B530F2, 0xEF06BCF1, 0xCFE118B6);
	r1 = D(r1, s1_0_1, 0xFEEFFC05, 0xFA12EA07, 0xFEE7D505, 0xD7EE10E3);
	r2 = D(r2, s1_0_1, 0x06E8EFF0, 0xECDA0EEE, 0xA105FF02, 0x0607F7F2);
	r3 = D(r3, s1_0_1, 0xE2E9DB22, 0xEA00FDFF, 0x810B1014, 0xF4F6F601);
	r4 = D(r4, s1_0_1, 0xF2FE1303, 0x20069CFC, 0x01F70D0F, 0x08FDF3F8);
	r5 = D(r5, s1_0_1, 0x03FCFC01, 0x33E4D1F0, 0x06E80613, 0xF60E1A0D);
	r0 = D(r0, s1_0_2, 0x0419FF08, 0xF4CFBBED, 0x090CFC0E, 0x2716EE02);
	r1 = D(r1, s1_0_2, 0xFBFCFFF4, 0x0C0D0309, 0xFDEAC20E, 0xF0E9FEF2);
	r2 = D(r2, s1_0_2, 0x01F4F123, 0xFDF416FB, 0x06EAFDFA, 0x030A0500);
	r3 = D(r3, s1_0_2, 0x04FFDC04, 0xFEFF02FF, 0x00F31807, 0x040AFCF8);
	r4 = D(r4, s1_0_2, 0x030B0AF1, 0x0815DD19, 0xFFF50000, 0x05ECEBFF);
	r5 = D(r5, s1_0_2, 0x03040005, 0x021705F9, 0x0AE302FC, 0x09070301);
	r0 = D(r0, s1_1_0, 0xF602020C, 0xFC12F1F7, 0x03018109, 0x42020D25);
	r1 = D(r1, s1_1_0, 0x17F1EAD7, 0xF109070D, 0x0006F7F8, 0xFF14F7EA);
	r2 = D(r2, s1_1_0, 0xECE4A707, 0xFC130303, 0xFB14040B, 0x040BEA09);
	r3 = D(r3, s1_1_0, 0x03FBD90E, 0xFDFF0802, 0x10E208EF, 0x00FDE600);
	r4 = D(r4, s1_1_0, 0x0301F803, 0xEC05B0F1, 0xDEE607F9, 0xFDDDEA07);
	r5 = D(r5, s1_1_0, 0x00FE0303, 0x8181E8CA, 0xFAF1EC3C, 0x14F70603);
	r0 = D(r0, s1_1_1, 0x110AFFB0, 0x0D435102, 0x01FA0ADE, 0x28E7400D);
	r1 = D(r1, s1_1_1, 0x05EBFB04, 0xFFE7F8F9, 0xFA0FE9F2, 0xED01EEF4);
	r2 = D(r2, s1_1_1, 0x0F0F3EF3, 0xC88108FD, 0xDCE6E904, 0xFFF1FBE7);
	r3 = D(r3, s1_1_1, 0xEA0BE924, 0x04F9FBF9, 0x178145F8, 0xFD36D812);
	r4 = D(r4, s1_1_1, 0x28E60FFE, 0x2403EB10, 0xF9A50400, 0x01E5E718);
	r5 = D(r5, s1_1_1, 0xFFF90700, 0x01F53329, 0x0738FC49, 0xF1C611E8);
	r0 = D(r0, s1_1_2, 0xF6DEEA06, 0xF733AB81, 0xF58101F6, 0xEC0ED3C3);
	r1 = D(r1, s1_1_2, 0x010913C9, 0x03EB10F5, 0xFB819C10, 0xFF171BE6);
	r2 = D(r2, s1_1_2, 0xF40A03FD, 0xFFE909FC, 0x0515F70E, 0x0400FEF6);
	r3 = D(r3, s1_1_2, 0x0925E5EE, 0x013809FF, 0xFA0DF011, 0x063F05E4);
	r4 = D(r4, s1_1_2, 0x0481DA11, 0x00E00F0B, 0x01EC0A07, 0x00E4F203);
	r5 = D(r5, s1_1_2, 0xFFF4FCFE, 0x06FAF8CE, 0xF826F9FE, 0xF9E10911);
	r0 = D(r0, s1_2_0, 0x130824CA, 0x0B0BF9FA, 0xFF050200, 0xEC12F5FA);
	r1 = D(r1, s1_2_0, 0x03FE2685, 0x060204F9, 0x060EF6F5, 0xFA0FEBF4);
	r2 = D(r2, s1_2_0, 0xF2EE261E, 0x0FFCE608, 0x11F410F7, 0xFD00FE04);
	r3 = D(r3, s1_2_0, 0xF9FCF519, 0x010002FE, 0x05FDF607, 0xFE02EF02);
	r4 = D(r4, s1_2_0, 0xFEFA13F3, 0x04FDCA04, 0xFA020AF8, 0xF8FBF9FF);
	r5 = D(r5, s1_2_0, 0x0100FFFE, 0xDC967F22, 0x05DB0AD4, 0x02030B03);
	r0 = D(r0, s1_2_1, 0xFB010181, 0x0B0B052A, 0xF7FA010E, 0x04B9AB03);
	r1 = D(r1, s1_2_1, 0xFBF80F0D, 0x010111F1, 0x0C0405F9, 0x09FA17D3);
	r2 = D(r2, s1_2_1, 0xFE0BFCE4, 0x0B8EE413, 0x03DDF025, 0x0009FE01);
	r3 = D(r3, s1_2_1, 0x00F80306, 0x020105FC, 0x07E7031D, 0xFD0CF0F9);
	r4 = D(r4, s1_2_1, 0x01F112E4, 0x0F238914, 0xFF26FDFB, 0x03FF06DD);
	r5 = D(r5, s1_2_1, 0x00FF0301, 0x100D3AFA, 0xFB1EFDFD, 0xFBF909E4);
	r0 = D(r0, s1_2_2, 0xFEFF0EE1, 0x00F0E33D, 0x07040C0E, 0xF03F817F);
	r1 = D(r1, s1_2_2, 0xFDE708BE, 0x02FDF7FB, 0xFCF5E8F0, 0xFCF80AE1);
	r2 = D(r2, s1_2_2, 0x02E304FD, 0x09BF2015, 0x08D40AFA, 0x0009FFF2);
	r3 = D(r3, s1_2_2, 0xFF04CC15, 0x01FC03FE, 0x04DA0F2E, 0x02F7FA03);
	r4 = D(r4, s1_2_2, 0xFDFB0901, 0x0B050413, 0x01030206, 0xFF06EDF7);
	r5 = D(r5, s1_2_2, 0x01010301, 0xFCF71705, 0x01F60901, 0xFE10100E);
	s0_0_0 = G[4][xy.y+0][xy.x+0]; s0_0_1 = G[4][xy.y+0][xy.x+1];
	s0_0_2 = G[4][xy.y+0][xy.x+2]; s0_1_0 = G[4][xy.y+1][xy.x+0];
	s0_1_1 = G[4][xy.y+1][xy.x+1]; s0_1_2 = G[4][xy.y+1][xy.x+2];
	s0_2_0 = G[4][xy.y+2][xy.x+0]; s0_2_1 = G[4][xy.y+2][xy.x+1];
	s0_2_2 = G[4][xy.y+2][xy.x+2]; s1_0_0 = G[5][xy.y+0][xy.x+0];
	s1_0_1 = G[5][xy.y+0][xy.x+1]; s1_0_2 = G[5][xy.y+0][xy.x+2];
	s1_1_0 = G[5][xy.y+1][xy.x+0]; s1_1_1 = G[5][xy.y+1][xy.x+1];
	s1_1_2 = G[5][xy.y+1][xy.x+2]; s1_2_0 = G[5][xy.y+2][xy.x+0];
	s1_2_1 = G[5][xy.y+2][xy.x+1]; s1_2_2 = G[5][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x0208E6EF, 0x1514FBF3, 0xFAF0F61D, 0x3110D2FB);
	r1 = D(r1, s0_0_0, 0xEAF7FBFB, 0xFEFE0E0A, 0x020F0906, 0x0413FB05);
	r2 = D(r2, s0_0_0, 0xC3152A1A, 0x0A12F008, 0x0D14EE06, 0x0A03FDFF);
	r3 = D(r3, s0_0_0, 0x02F8EFFD, 0x01010002, 0xE80BF2F4, 0x07FF0104);
	r4 = D(r4, s0_0_0, 0xF40A0201, 0x0EE0F8F7, 0x08030EFD, 0xF8011309);
	r5 = D(r5, s0_0_0, 0xF903FFFE, 0x1405FF18, 0xFFF7F014, 0xE9030BFF);
	r0 = D(r0, s0_0_1, 0xE930CAF8, 0xC406EACC, 0x1E1A14FF, 0xE308F0E0);
	r1 = D(r1, s0_0_1, 0x11E601DF, 0xFBFA0307, 0xDDD7E30E, 0xF121EA05);
	r2 = D(r2, s0_0_1, 0xEEADBFFE, 0x0713FB19, 0x1D04FD11, 0xFC02FF01);
	r3 = D(r3, s0_0_1, 0x08F51201, 0x0004FE02, 0x06F4EEFB, 0xFCFE0F04);
	r4 = D(r4, s0_0_1, 0x090813F0, 0x121AFCE8, 0x08050309, 0x0FF502F8);
	r5 = D(r5, s0_0_1, 0xFF02FBFD, 0x030213FA, 0xFD01DDF3, 0xE00AFEF0);
	r0 = D(r0, s0_0_2, 0x0C1708DE, 0x1D97F3D2, 0xF3F2F901, 0x17D716FA);
	r1 = D(r1, s0_0_2, 0xF805070D, 0x06F7F8FA, 0xEB080401, 0xF1FF0D09);
	r2 = D(r2, s0_0_2, 0xCEFC24F5, 0xFB08F61C, 0x0708010A, 0xFE030105);
	r3 = D(r3, s0_0_2, 0x0D010D07, 0xFD010000, 0x13140403, 0xFC08F80D);
	r4 = D(r4, s0_0_2, 0xFAF90710, 0x0AFDF9B7, 0xFFF90209, 0x0304FAF8);
	r5 = D(r5, s0_0_2, 0x05FE01FF, 0x101103F6, 0x1300F709, 0xF0050DFF);
	r0 = D(r0, s0_1_0, 0x09F6E702, 0x34D2B504, 0x0F0DCD12, 0xFA19DDCE);
	r1 = D(r1, s0_1_0, 0xEBD0DD1E, 0x0C0DFA02, 0x171A1A04, 0x070BF201);
	r2 = D(r2, s0_1_0, 0xBB0040CF, 0x190608ED, 0x130602D9, 0x05FCFC04);
	r3 = D(r3, s0_1_0, 0xE3FE1805, 0xFEFF02FF, 0xFA160221, 0x0FFDFD00);
	r4 = D(r4, s0_1_0, 0x05090901, 0xEFF0D6E9, 0x0E120428, 0x0301DD05);
	r5 = D(r5, s0_1_0, 0xFD050505, 0x1EB9810E, 0xEC1DDAEB, 0x14FF1203);
	r0 = D(r0, s0_1_1, 0xFB23F2EB, 0xF2E41EEA, 0x0B24EEF6, 0xFF433E2D);
	r1 = D(r1, s0_1_1, 0xF60FDC1B, 0x0AF2FEF2, 0x051D1F30, 0xD70E0305);
	r2 = D(r2, s0_1_1, 0x10213DF1, 0xDBCEF40E, 0xE50A13E5, 0x05EFFDFF);
	r3 = D(r3, s0_1_1, 0xFDDF00FA, 0x03FEFF00, 0x1014F50A, 0x1FFC0300);
	r4 = D(r4, s0_1_1, 0x0DEFFA07, 0x19F0DC10, 0x03EBF4F8, 0x16FFED08);
	r5 = D(r5, s0_1_1, 0x000804FE, 0xFE021D31, 0xFE0CFE01, 0x01EFDFFF);
	r0 = D(r0, s0_1_2, 0xF60509E0, 0xE90F1A2C, 0x090F0C01, 0xDDBCFE0E);
	r1 = D(r1, s0_1_2, 0x13F80B10, 0x07EF03FA, 0x0805E2DF, 0xEDFD110B);
	r2 = D(r2, s0_1_2, 0xD704E318, 0xF8FF0FF9, 0xF8FD0DF1, 0xFEF9FFFE);
	r3 = D(r3, s0_1_2, 0x01DF00FD, 0x060200FF, 0x0A0CDFFC, 0x0EE70806);
	r4 = D(r4, s0_1_2, 0x03ECFDFC, 0xF8F90E09, 0x08FFFDF6, 0x05E6FC17);
	r5 = D(r5, s0_1_2, 0xFF00FD01, 0xFCE2F8F0, 0xFA06F503, 0xF8F7000C);
	r0 = D(r0, s0_2_0, 0x1600D1F2, 0x1DECF4C2, 0xFFF504FD, 0xE9FA489E);
	r1 = D(r1, s0_2_0, 0x00FC0BEE, 0xF4F21600, 0x07F507FE, 0x07FC08F4);
	r2 = D(r2, s0_2_0, 0x0413E038, 0x2009F51C, 0x0A020D0F, 0x0307FBFC);
	r3 = D(r3, s0_2_0, 0xF007F704, 0x010103FE, 0xF4F0F512, 0xFE02FA04);
	r4 = D(r4, s0_2_0, 0x01F70B02, 0xFA19CF05, 0xFDE8FC11, 0xF900F50C);
	r5 = D(r5, s0_2_0, 0xFE02FE01, 0x14BFBEF9, 0xFD1DF7F9, 0x020CFAFA);
	r0 = D(r0, s0_2_1, 0xFC22FB10, 0xFE0EABFE, 0x0EE204FF, 0x00045581);
	r1 = D(r1, s0_2_1, 0x13FA03EB, 0x08FF1606, 0x02FF0C0F, 0x04FFE8FB);
	r2 = D(r2, s0_2_1, 0xE1060C33, 0xF1F7CBCE, 0x0910E6F9, 0x00FBFEFC);
	r3 = D(r3, s0_2_1, 0x02FD1408, 0xFD0201FD, 0xFE1003F3, 0x020100FE);
	r4 = D(r4, s0_2_1, 0xFCFAFB00, 0x01C10BE7, 0xFC01000D, 0x03FC0B00);
	r5 = D(r5, s0_2_1, 0x0001FF00, 0xEBE0F606, 0xF71DF9DB, 0x0205F0FD);
	r0 = D(r0, s0_2_2, 0xFC1CFCF2, 0x0202E90B, 0x0001FE0B, 0xCD6F45CD);
	r1 = D(r1, s0_2_2, 0xFC1102F5, 0x0104FD0A, 0x001E0614, 0xF3020F26);
	r2 = D(r2, s0_2_2, 0xFF122E02, 0x0CE100FA, 0xFFD00FF1, 0x01FB0104);
	r3 = D(r3, s0_2_2, 0xFFE70606, 0x00FD02FE, 0x0C03FBEC, 0xFDF6FBFF);
	r4 = D(r4, s0_2_2, 0x0809F609, 0x13E124F4, 0xFEF9F40C, 0x070603FF);
	r5 = D(r5, s0_2_2, 0x0300FEFF, 0xF6030B11, 0x0802F0FB, 0xFE08ED0B);
	r0 = D(r0, s1_0_0, 0xF0CBFFFB, 0xDFAC1720, 0xDE010014, 0x1C151814);
	r1 = D(r1, s1_0_0, 0xE3F21D1D, 0xFEFC05FA, 0x18F4FA05, 0x08010009);
	r2 = D(r2, s1_0_0, 0xF6F0C505, 0x0A01030E, 0x04FB0113, 0x01FE020E);
	r3 = D(r3, s1_0_0, 0xFB1CFB11, 0xFF0301FF, 0xFCF1170C, 0x08FFFB02);
	r4 = D(r4, s1_0_0, 0x03F304FF, 0xD0E5EA12, 0x06F7FAF8, 0x0DF70C0B);
	r5 = D(r5, s1_0_0, 0x02FBFF04, 0xD2190506, 0x8115F505, 0xFEF1010B);
	r0 = D(r0, s1_0_1, 0xF60B0F02, 0x1ED8231F, 0x2A0105E3, 0x02F63007);
	r1 = D(r1, s1_0_1, 0x0507FBE3, 0xF7061309, 0xF20DDDF9, 0x07E911F7);
	r2 = D(r2, s1_0_1, 0x3706E9F1, 0x00FBFA01, 0xFF210FF3, 0x03FD04FB);
	r3 = D(r3, s1_0_1, 0x10FF02EB, 0xFF000201, 0xF52FECFE, 0x0AFF0101);
	r4 = D(r4, s1_0_1, 0x1110F4F6, 0xFDE30F28, 0x0DEFFFF5, 0x12F7030D);
	r5 = D(r5, s1_0_1, 0xF20AFFFF, 0xEBE800F0, 0xF70CE601, 0xFA04F1F5);
	r0 = D(r0, s1_0_2, 0xF0EC0305, 0xEB22F005, 0x050A081E, 0xDD0431FF);
	r1 = D(r1, s1_0_2, 0x12FB02FD, 0xF9FF14FE, 0xEF08F525, 0x20050C22);
	r2 = D(r2, s1_0_2, 0xED08D912, 0x030B04FD, 0xFF01FD0C, 0xFC000302);
	r3 = D(r3, s1_0_2, 0x060B0B0A, 0xFD02FE01, 0xDDFC00F3, 0xF702060C);
	r4 = D(r4, s1_0_2, 0x10F40002, 0xFD0C0505, 0x1402FE07, 0x0CFB0105);
	r5 = D(r5, s1_0_2, 0xFCFEFF02, 0xFFFE1406, 0x1000F300, 0x08FDF111);
	r0 = D(r0, s1_1_0, 0xE5E0163D, 0x14F0102F, 0xC8121024, 0x240D36C7);
	r1 = D(r1, s1_1_0, 0x07EAE614, 0xE40609FC, 0xFAE919FE, 0x0F013012);
	r2 = D(r2, s1_1_0, 0xBCDB8114, 0x1DE12CF8, 0x06E812FC, 0x0C1904F9);
	r3 = D(r3, s1_1_0, 0x022BF8F8, 0xFFFD0402, 0x00DBF71C, 0x0AFCEC04);
	r4 = D(r4, s1_1_0, 0xFDF70407, 0x11E2DF1A, 0x06E7F416, 0x05E8F00B);
	r5 = D(r5, s1_1_0, 0xFFF6FB03, 0xD23DF544, 0xF66512E6, 0x19EBF9FE);
	r0 = D(r0, s1_1_1, 0x0AFAEAD9, 0x3F0D2607, 0xE9FEF30E, 0x12AFC8D8);
	r1 = D(r1, s1_1_1, 0xF3D21B3E, 0xF409F3E6, 0x23DF0D2A, 0x19DA0918);
	r2 = D(r2, s1_1_1, 0xCAC52DEE, 0x11090819, 0xFDFED5F4, 0x2DEB050D);
	r3 = D(r3, s1_1_1, 0x0CEA0816, 0xFFECFF0C, 0xF4F9EB13, 0x21D9F9ED);
	r4 = D(r4, s1_1_1, 0xF209EB03, 0x0FF181A4, 0xD6360326, 0x09FD0202);
	r5 = D(r5, s1_1_1, 0xF0E18110, 0xE7C836FA, 0x1CDA08E9, 0x0115EF12);
	r0 = D(r0, s1_1_2, 0x0006131E, 0x24FC083A, 0xF606EE24, 0xE8D74552);
	r1 = D(r1, s1_1_2, 0x1E0921EB, 0xEEF201FE, 0xF0130C11, 0xED0C020D);
	r2 = D(r2, s1_1_2, 0x0807E52C, 0x07FEF90A, 0xFCF6F20A, 0x0706FF05);
	r3 = D(r3, s1_1_2, 0x08F7EF03, 0xFAFAFE01, 0xFF12181A, 0x030FF4F5);
	r4 = D(r4, s1_1_2, 0xF70EEB0C, 0xF5E6050B, 0xF7FDFC06, 0x14F1EFFE);
	r5 = D(r5, s1_1_2, 0x01FFFB01, 0x0417F80B, 0x04F1F40F, 0xEC04F804);
	r0 = D(r0, s1_2_0, 0x02091908, 0x051504E9, 0xFA150609, 0x0BFE54F9);
	r1 = D(r1, s1_2_0, 0x1F1504F4, 0x02120BFD, 0x0A08EEFB, 0xF7060E0D);
	r2 = D(r2, s1_2_0, 0x0109C833, 0xF6FF0F15, 0x0310EB1C, 0x00000006);
	r3 = D(r3, s1_2_0, 0x01060A07, 0xFE01FE00, 0xFC0C040B, 0xFD01FBFF);
	r4 = D(r4, s1_2_0, 0x01EBE811, 0x09141FF1, 0x0C060316, 0x16041400);
	r5 = D(r5, s1_2_0, 0xFF040201, 0xD7B80D06, 0x07E1AF14, 0xFF14FD00);
	r0 = D(r0, s1_2_1, 0x09C9131A, 0x040F140C, 0x1C0EDA05, 0xEF0DEC19);
	r1 = D(r1, s1_2_1, 0x13210706, 0x1209FFF2, 0x040FEFFB, 0x1D1218F3);
	r2 = D(r2, s1_2_1, 0x0406F112, 0x0116F0F6, 0xF1F0F51F, 0xFC09FB06);
	r3 = D(r3, s1_2_1, 0xF114F6FE, 0xF8100004, 0xFFD71114, 0x0709F501);
	r4 = D(r4, s1_2_1, 0x08F00B0E, 0xFCFA2F01, 0x0BE8FF0E, 0x12041603);
	r5 = D(r5, s1_2_1, 0x0205FFFA, 0xCA282701, 0x12FD0B20, 0xF8F60EFD);
	r0 = D(r0, s1_2_2, 0x0301080C, 0xF506122A, 0x070BF4FF, 0xFEC40A06);
	r1 = D(r1, s1_2_2, 0xEED30C17, 0xFDFD07FE, 0x0702F80B, 0xEEF2060D);
	r2 = D(r2, s1_2_2, 0x03FDD926, 0x021AFE08, 0x01050F13, 0xFAFFFF01);
	r3 = D(r3, s1_2_2, 0x0103EA09, 0xFB0B0102, 0x0107FEF7, 0x0304FE07);
	r4 = D(r4, s1_2_2, 0x0AFA07F8, 0x0B1311F0, 0x0FFFFA05, 0x02F903F6);
	r5 = D(r5, s1_2_2, 0x0203FFF9, 0xEC031916, 0x060A160D, 0x070CFD02);
	f0 = vec4(r0) * 6.2000124e-05;
	f0 = clamp(f0, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 0), f0);
	f1 = vec4(r1) * 6.2000124e-05;
	f1 = clamp(f1, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 0), f1);
	f2 = vec4(r2) * 6.2000124e-05;
	f2 = clamp(f2, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 0), f2);
	f3 = vec4(r3) * 6.2000124e-05;
	f3 = clamp(f3, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 1), f3);
	f4 = vec4(r4) * 6.2000124e-05;
	f4 = clamp(f4, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 1), f4);
	f5 = vec4(r5) * 6.2000124e-05;
	f5 = clamp(f5, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 1), f5);
}

//!DESC [CuNNy_4x24_SOFT_vk] -conv3
//!HOOK LUMA
//!COMPUTE 24 16 8 8
//!BIND conv2
//!BIND LUMA
//!SAVE conv3
//!WIDTH LUMA.w 3 *
//!HEIGHT LUMA.h 2 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w 1.200 * > OUTPUT.h LUMA.h 1.200 * > *
#extension GL_EXT_spirv_intrinsics : require
#define l0(x, y) (conv2_mul * texelFetch(conv2_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(0, 0), 0))
#define l1(x, y) (conv2_mul * texelFetch(conv2_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(1, 0), 0))
#define l2(x, y) (conv2_mul * texelFetch(conv2_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(2, 0), 0))
#define l3(x, y) (conv2_mul * texelFetch(conv2_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(0, 1), 0))
#define l4(x, y) (conv2_mul * texelFetch(conv2_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(1, 1), 0))
#define l5(x, y) (conv2_mul * texelFetch(conv2_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(2, 1), 0))
spirv_instruction (extensions = ["SPV_KHR_integer_dot_product"], capabilities = [6019, 6018], id = 4450)
int dp4(int a, int b, spirv_literal int fmt);
#define D(r, s, a, b, c, d) r + ivec4(dp4(s, a, 0), dp4(s, b, 0), dp4(s, c, 0), dp4(s, d, 0))
shared int G[6][10][10];
void hook() {
	ivec2 xy = ivec2(gl_LocalInvocationID.xy);
	ivec2 pos = ivec2(gl_WorkGroupID.xy) * ivec2(8, 8) + xy;
	ivec2 opos = pos * ivec2(3, 2);
	ivec2 sz = ivec2(LUMA_size) - ivec2(1);
	for (int y = 0; y < 10; y += 8) {
		int ay = xy.y + y;
		if (ay >= 10) break;
		for (int x = 0; x < 10; x += 8) {
			int ax = xy.x + x;
			if (ax >= 10) break;
			vec4 v0 = l0(x - 1, y - 1);
			vec4 v1 = l1(x - 1, y - 1);
			vec4 v2 = l2(x - 1, y - 1);
			vec4 v3 = l3(x - 1, y - 1);
			vec4 v4 = l4(x - 1, y - 1);
			vec4 v5 = l5(x - 1, y - 1);
			G[0][ay][ax] = int(packSnorm4x8(v0));
			G[1][ay][ax] = int(packSnorm4x8(v1));
			G[2][ay][ax] = int(packSnorm4x8(v2));
			G[3][ay][ax] = int(packSnorm4x8(v3));
			G[4][ay][ax] = int(packSnorm4x8(v4));
			G[5][ay][ax] = int(packSnorm4x8(v5));
		}
	}
	barrier();
	int s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;
	ivec4 r0, r1, r2, r3, r4, r5;
	vec4 f0, f1, f2, f3, f4, f5;
	r0 = ivec4(0); r1 = ivec4(0); r2 = ivec4(0); r3 = ivec4(0); r4 = ivec4(0); r5 = ivec4(0);
	s0_0_0 = G[0][xy.y+0][xy.x+0]; s0_0_1 = G[0][xy.y+0][xy.x+1];
	s0_0_2 = G[0][xy.y+0][xy.x+2]; s0_1_0 = G[0][xy.y+1][xy.x+0];
	s0_1_1 = G[0][xy.y+1][xy.x+1]; s0_1_2 = G[0][xy.y+1][xy.x+2];
	s0_2_0 = G[0][xy.y+2][xy.x+0]; s0_2_1 = G[0][xy.y+2][xy.x+1];
	s0_2_2 = G[0][xy.y+2][xy.x+2]; s1_0_0 = G[1][xy.y+0][xy.x+0];
	s1_0_1 = G[1][xy.y+0][xy.x+1]; s1_0_2 = G[1][xy.y+0][xy.x+2];
	s1_1_0 = G[1][xy.y+1][xy.x+0]; s1_1_1 = G[1][xy.y+1][xy.x+1];
	s1_1_2 = G[1][xy.y+1][xy.x+2]; s1_2_0 = G[1][xy.y+2][xy.x+0];
	s1_2_1 = G[1][xy.y+2][xy.x+1]; s1_2_2 = G[1][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x000104FA, 0x0FFC02FA, 0x03FE07F7, 0x09FB0503);
	r1 = D(r1, s0_0_0, 0x0303FB03, 0x0B040200, 0xF2FE04FD, 0xCA01F40E);
	r2 = D(r2, s0_0_0, 0xFAFE03FA, 0xF500FDF8, 0x05060105, 0xF601F902);
	r3 = D(r3, s0_0_0, 0x0804FE07, 0x0202FDFF, 0x0B01FDF6, 0x0B010108);
	r4 = D(r4, s0_0_0, 0x06100402, 0xF9040105, 0xFF06F9FA, 0xF7FE01FE);
	r5 = D(r5, s0_0_0, 0x1001FF02, 0xF4FF0000, 0xF8F40B02, 0x080200F8);
	r0 = D(r0, s0_0_1, 0xF8FD01F4, 0x1F090005, 0x080000FF, 0x10F90707);
	r1 = D(r1, s0_0_1, 0xD50CFCF6, 0x230A03FE, 0xEE0CFDE3, 0xF50DFB01);
	r2 = D(r2, s0_0_1, 0xFEFEFDFD, 0x04F9FDF2, 0xF7080403, 0xF600FE07);
	r3 = D(r3, s0_0_1, 0x04080407, 0xFE0201FB, 0xFA00070C, 0x1FF80813);
	r4 = D(r4, s0_0_1, 0xF8EE08FB, 0x05F20702, 0xFA09FC0C, 0x01FFF9EB);
	r5 = D(r5, s0_0_1, 0x11050405, 0xF80100F9, 0x1D0201ED, 0xFFFF01FA);
	r0 = D(r0, s0_0_2, 0x01FF01F4, 0x17FD070C, 0x0B04050E, 0x13F40409);
	r1 = D(r1, s0_0_2, 0xF90CFE02, 0xFD0DFAF8, 0x0D0A03DF, 0xDF080118);
	r2 = D(r2, s0_0_2, 0x10FD0A0B, 0x00030204, 0xFF01000B, 0x0503030C);
	r3 = D(r3, s0_0_2, 0x05FCFD00, 0x04FFFF01, 0x07FD0623, 0x240500E9);
	r4 = D(r4, s0_0_2, 0xF7FF03D8, 0x08FD0100, 0x07FEFBFF, 0xEB03FFF2);
	r5 = D(r5, s0_0_2, 0xFD010502, 0xF8FDFDF8, 0x09F503F0, 0xFF04FED9);
	r0 = D(r0, s0_1_0, 0x05FD06FD, 0x0BFC010B, 0x10FF01FA, 0x10010706);
	r1 = D(r1, s0_1_0, 0xEF08F4FC, 0x0F0B0D07, 0x08F805F4, 0xD714F2E6);
	r2 = D(r2, s0_1_0, 0xF7F90205, 0xEDF60915, 0xFD0504F8, 0x08FFFC02);
	r3 = D(r3, s0_1_0, 0x11FEF9EF, 0x00FD03FF, 0xFEFB0409, 0x26F61302);
	r4 = D(r4, s0_1_0, 0x1510FAEE, 0xE90500EE, 0xE008FCF0, 0x0204FFF4);
	r5 = D(r5, s0_1_0, 0x10030801, 0xFCFC0AFA, 0x19CE0EF7, 0x020206F5);
	r0 = D(r0, s0_1_1, 0x0CE915F5, 0x06F9FECD, 0x1C0BF5F4, 0xF1EA03F9);
	r1 = D(r1, s0_1_1, 0xF118F306, 0xEA1D0C02, 0xFEE501E3, 0xE009F31A);
	r2 = D(r2, s0_1_1, 0x05F6FDF6, 0x01E702DD, 0x04DF0E13, 0x08F504EB);
	r3 = D(r3, s0_1_1, 0x26E3031F, 0xF4F2FAFE, 0xF4F404E7, 0x05CD1CFC);
	r4 = D(r4, s0_1_1, 0x0AE4081A, 0x1AF30707, 0xE306ECFA, 0xF8FFFFEB);
	r5 = D(r5, s0_1_1, 0x11F500F6, 0x0BEF060E, 0xF9EB16D4, 0x0DF2F2F4);
	r0 = D(r0, s0_1_2, 0xFD0100FD, 0x13F90B1A, 0x11FF14FC, 0x18F70018);
	r1 = D(r1, s0_1_2, 0xFD0EF4FD, 0xF818FAF5, 0xFEEE0809, 0xE408F825);
	r2 = D(r2, s0_1_2, 0x03F00E06, 0x0B01061D, 0x11EDFDEB, 0x03030700);
	r3 = D(r3, s0_1_2, 0x0EEEFCE9, 0x070203FA, 0x06F5FE12, 0x07F208EB);
	r4 = D(r4, s0_1_2, 0x01F40DEF, 0xFEF70518, 0xF306E703, 0xFF02FAF3);
	r5 = D(r5, s0_1_2, 0x0603030D, 0xF1F7FEE7, 0xF6DC07F5, 0x03FBFADE);
	r0 = D(r0, s0_2_0, 0xFF00FFFE, 0x0402FF06, 0x11031502, 0x0DEE0313);
	r1 = D(r1, s0_2_0, 0xEB060409, 0xF00A0800, 0xF8FE0200, 0xE201F509);
	r2 = D(r2, s0_2_0, 0x06F8FF02, 0x120100F8, 0x020003FA, 0xFEFD0305);
	r3 = D(r3, s0_2_0, 0x11FF04F5, 0x01020001, 0x06F00219, 0x21031011);
	r4 = D(r4, s0_2_0, 0xFE03EEE4, 0xEB01EA06, 0x17FA0EFB, 0xFF010600);
	r5 = D(r5, s0_2_0, 0xFC01F906, 0xFB04FAFB, 0x04F302F1, 0x0E0800F3);
	r0 = D(r0, s0_2_1, 0xF801FFEC, 0x1103FDFF, 0xFBF01AF4, 0xF9FC08E8);
	r1 = D(r1, s0_2_1, 0xF508F2FF, 0xF20FF8FC, 0xEEF00B02, 0xFB08FBFC);
	r2 = D(r2, s0_2_1, 0x05FBFE0A, 0x130AFF0D, 0x0AF30CF9, 0x140103FE);
	r3 = D(r3, s0_2_1, 0x18F20C05, 0xF70000FB, 0x25F401D8, 0x090A0AD8);
	r4 = D(r4, s0_2_1, 0x09081007, 0x0FF70DFD, 0x18FC0FF4, 0xFD02FDF6);
	r5 = D(r5, s0_2_1, 0xE5FAF9F8, 0x0308090A, 0x22F81EBC, 0x08FE05EF);
	r0 = D(r0, s0_2_2, 0x080104FA, 0x1A021203, 0xFBFE10DD, 0x06F7FCF3);
	r1 = D(r1, s0_2_2, 0xEC0AF507, 0xEC09D9FC, 0x020009FA, 0xDE0CFD04);
	r2 = D(r2, s0_2_2, 0x12000C01, 0x010608F3, 0xF106FA0C, 0xFC030700);
	r3 = D(r3, s0_2_2, 0x1FFB0509, 0x03FEFFFE, 0x1E001C0E, 0x13F90AC5);
	r4 = D(r4, s0_2_2, 0x06F70504, 0x0AFB0703, 0x0001F603, 0xF90201F9);
	r5 = D(r5, s0_2_2, 0xF502F9FD, 0x00FF04F4, 0x3FE41B09, 0x09F90FE8);
	r0 = D(r0, s1_0_0, 0x05F7FE03, 0x0B070E07, 0xFC00FAFB, 0x0502FFF4);
	r1 = D(r1, s1_0_0, 0xFE0509F9, 0xF304EFE1, 0xF105E9EE, 0xFC0710F9);
	r2 = D(r2, s1_0_0, 0xFDF3F905, 0xFEE6FD0F, 0xFB0500FA, 0xFCE415F9);
	r3 = D(r3, s1_0_0, 0xF900FAF8, 0x00FFFEFE, 0x0901F214, 0xF6F2170C);
	r4 = D(r4, s1_0_0, 0xEB06E201, 0x00FEFBF9, 0x080A0FFD, 0x0300FF04);
	r5 = D(r5, s1_0_0, 0x00000208, 0xFF0104F2, 0x0317C3F8, 0x000700E0);
	r0 = D(r0, s1_0_1, 0xFCF90004, 0x01FF03FC, 0x0601FE0C, 0x0FFAFEFD);
	r1 = D(r1, s1_0_1, 0x0CFC1803, 0x090404FD, 0x060CE00E, 0x1001E11A);
	r2 = D(r2, s1_0_1, 0xFDF3FBF8, 0xFCE2FBF5, 0xFE02FC17, 0x08FF04F9);
	r3 = D(r3, s1_0_1, 0x0606DD33, 0xFEFD0000, 0xFB1AF00F, 0xF9E9FCD7);
	r4 = D(r4, s1_0_1, 0xFE10FEDF, 0x01FEF2E5, 0xFD040AFC, 0xF9F40DEE);
	r5 = D(r5, s1_0_1, 0xFFFEFFFE, 0xF6F9FFEA, 0xF40F21EF, 0x0E08FBE9);
	r0 = D(r0, s1_0_2, 0xF3FEF902, 0xFCFF0008, 0xFC010002, 0xE7F6FAF4);
	r1 = D(r1, s1_0_2, 0xFF0400F8, 0x0302F200, 0xFDFEF701, 0x03FA010D);
	r2 = D(r2, s1_0_2, 0xE606F2F7, 0xFF00FC0F, 0xFCF7F604, 0xFE040005);
	r3 = D(r3, s1_0_2, 0xFEFA050A, 0x0201FFFC, 0xED01070F, 0x05FB13CF);
	r4 = D(r4, s1_0_2, 0x0507FAFF, 0x0408F906, 0x040506FF, 0x07FDFAFC);
	r5 = D(r5, s1_0_2, 0x00FAFD01, 0xFE06FFF0, 0x2DDB02E7, 0x02070ADC);
	r0 = D(r0, s1_1_0, 0x02F5FFFF, 0x00180505, 0x0C110500, 0xF50E0CEB);
	r1 = D(r1, s1_1_0, 0xFE0C11FD, 0x0EFCF903, 0x09F7F3C5, 0xFAF5D113);
	r2 = D(r2, s1_1_0, 0x0504FAF8, 0x00E3F2F6, 0xF5F4F40C, 0xFB0108E8);
	r3 = D(r3, s1_1_0, 0xFA08F104, 0x040103FC, 0xE9FAF300, 0x00F4FB08);
	r4 = D(r4, s1_1_0, 0xF4E1C900, 0xF8CEE8F9, 0xF206F502, 0xFD060200);
	r5 = D(r5, s1_1_0, 0x04170B0C, 0xFDF7FBF8, 0x0AE891BB, 0xF702FEF7);
	r0 = D(r0, s1_1_1, 0x07F40006, 0x11F4FA18, 0xED08FABC, 0xF9E300FB);
	r1 = D(r1, s1_1_1, 0xF3FF1FDC, 0x1EF403E7, 0x0DDFD6DD, 0x0AEBD00A);
	r2 = D(r2, s1_1_1, 0xF706F9E1, 0x22E0F816, 0xDCE901EC, 0x03010900);
	r3 = D(r3, s1_1_1, 0xD513EF15, 0x0AFA030D, 0x00D0F22A, 0x1C10F627);
	r4 = D(r4, s1_1_1, 0xF208E5DA, 0x020FFB0C, 0xEC200707, 0x00F907F9);
	r5 = D(r5, s1_1_1, 0x13F715F2, 0xE31B0101, 0xD9EFE381, 0x020CEDF8);
	r0 = D(r0, s1_1_2, 0x0400FAFF, 0xF408FC06, 0x0FDF02F3, 0xDE0D01EF);
	r1 = D(r1, s1_1_2, 0x060106FB, 0x01FE04F6, 0xEE13F6EE, 0x110DFA00);
	r2 = D(r2, s1_1_2, 0xF007F6EA, 0x0211F700, 0x07F1FD02, 0x0CFF05FC);
	r3 = D(r3, s1_1_2, 0xF5001916, 0x02FC01FF, 0xE20CF219, 0xF20E0104);
	r4 = D(r4, s1_1_2, 0x0EF30806, 0xFCFEF809, 0xF900FC01, 0x000203F8);
	r5 = D(r5, s1_1_2, 0xFDFCFEFE, 0xFDFB02F6, 0x2204F8F8, 0x080D00EF);
	r0 = D(r0, s1_2_0, 0x01020002, 0xFB050603, 0xF6FD0BF1, 0xFE00FBEB);
	r1 = D(r1, s1_2_0, 0x010009F5, 0xFB0304F1, 0xFEF90100, 0x08050B06);
	r2 = D(r2, s1_2_0, 0xFBFDF803, 0xFEF7FC01, 0x00F7F70C, 0x02010702);
	r3 = D(r3, s1_2_0, 0x07FBFC08, 0xFF0000FA, 0x09010114, 0xF904CCEC);
	r4 = D(r4, s1_2_0, 0xEA0A04FA, 0xFD06F6F7, 0x000AE404, 0x02FEFFFD);
	r5 = D(r5, s1_2_0, 0xFCFE04FA, 0xF8FF00F2, 0x17020B03, 0xF807FBF9);
	r0 = D(r0, s1_2_1, 0xFEFBFCF9, 0xF910FEF5, 0x1023171E, 0x02FC00D1);
	r1 = D(r1, s1_2_1, 0x0401030B, 0xFC16090A, 0x09EB0615, 0xF5F8FAE2);
	r2 = D(r2, s1_2_1, 0xF6EDF4FD, 0x04F1FCED, 0xFEEDF80E, 0x070600F8);
	r3 = D(r3, s1_2_1, 0xF204E1FB, 0x01010409, 0xF9F3EAE6, 0x1404EDE8);
	r4 = D(r4, s1_2_1, 0x01FFFEEB, 0x0108FDFE, 0x0AFBE9FF, 0x0502FF04);
	r5 = D(r5, s1_2_1, 0x040B0E0B, 0xF5F6F8F5, 0x1AEED7EF, 0x0E09FAF7);
	r0 = D(r0, s1_2_2, 0xFE00FFFF, 0xFAFD0308, 0xFC060109, 0x01F8000A);
	r1 = D(r1, s1_2_2, 0x06FDFEFD, 0x020002FF, 0xFCF0F90A, 0x1600F508);
	r2 = D(r2, s1_2_2, 0xFDF1F104, 0xFD06080B, 0x00EA01F6, 0x060001FF);
	r3 = D(r3, s1_2_2, 0x020502FD, 0x01020201, 0xFA02FA15, 0x08FC010A);
	r4 = D(r4, s1_2_2, 0xF607FA09, 0x01FEFD07, 0x00FDF304, 0x01FFFF00);
	r5 = D(r5, s1_2_2, 0x01FF0105, 0x04FD00F8, 0x1C1DD1F7, 0x030AFA02);
	s0_0_0 = G[2][xy.y+0][xy.x+0]; s0_0_1 = G[2][xy.y+0][xy.x+1];
	s0_0_2 = G[2][xy.y+0][xy.x+2]; s0_1_0 = G[2][xy.y+1][xy.x+0];
	s0_1_1 = G[2][xy.y+1][xy.x+1]; s0_1_2 = G[2][xy.y+1][xy.x+2];
	s0_2_0 = G[2][xy.y+2][xy.x+0]; s0_2_1 = G[2][xy.y+2][xy.x+1];
	s0_2_2 = G[2][xy.y+2][xy.x+2]; s1_0_0 = G[3][xy.y+0][xy.x+0];
	s1_0_1 = G[3][xy.y+0][xy.x+1]; s1_0_2 = G[3][xy.y+0][xy.x+2];
	s1_1_0 = G[3][xy.y+1][xy.x+0]; s1_1_1 = G[3][xy.y+1][xy.x+1];
	s1_1_2 = G[3][xy.y+1][xy.x+2]; s1_2_0 = G[3][xy.y+2][xy.x+0];
	s1_2_1 = G[3][xy.y+2][xy.x+1]; s1_2_2 = G[3][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x01FC0106, 0xF60100FC, 0x05FDFA04, 0x0B06FB01);
	r1 = D(r1, s0_0_0, 0xF9FB0115, 0x0E09FF02, 0x0DCB0510, 0xF5EE0827);
	r2 = D(r2, s0_0_0, 0x0207F9EC, 0x0603FFFC, 0xFB0601FD, 0xEB100106);
	r3 = D(r3, s0_0_0, 0xFEF807F6, 0x00FFFF02, 0xF513FAE3, 0xFA04F9DF);
	r4 = D(r4, s0_0_0, 0xFCFCFD00, 0xF5E3FFF6, 0xFDF70103, 0x03F50105);
	r5 = D(r5, s0_0_0, 0xFE08FB00, 0x03FA0002, 0x06F8F6E8, 0xFDFEF207);
	r0 = D(r0, s0_0_1, 0xFE1C0400, 0xFAFA21F5, 0x040B0202, 0x0AFF02F6);
	r1 = D(r1, s0_0_1, 0xEFF01D0D, 0x071EFF03, 0x12F9DB06, 0xF105011C);
	r2 = D(r2, s0_0_1, 0x10F7F6FB, 0x0CF6F4FD, 0xFCED0FFC, 0x0BFEFE0E);
	r3 = D(r3, s0_0_1, 0xF9090DEA, 0xFD060001, 0x04EF0BEC, 0x17E0F8EC);
	r4 = D(r4, s0_0_1, 0x0F06DFF0, 0x0603E8E5, 0xF3F9FAF9, 0x0BF5F005);
	r5 = D(r5, s0_0_1, 0x07FF0900, 0x09FFFA03, 0x18C2E1DE, 0xF7FEFF03);
	r0 = D(r0, s0_0_2, 0x0501FE00, 0x0CF519F6, 0x04000BFB, 0x0AFFF902);
	r1 = D(r1, s0_0_2, 0xFB060307, 0xF800F802, 0xF904CA03, 0xF306F227);
	r2 = D(r2, s0_0_2, 0xFFFEDDF4, 0xFBFEE4FD, 0x04030600, 0xFD03FE0A);
	r3 = D(r3, s0_0_2, 0xFFFA06F2, 0xFCFBF205, 0x10F2ECEB, 0x0CFC08EE);
	r4 = D(r4, s0_0_2, 0x02040600, 0x06F500F3, 0xF7041402, 0xFC02FE03);
	r5 = D(r5, s0_0_2, 0x01FD0300, 0xFB00FF05, 0xFBF9D0F0, 0xF30DEBFE);
	r0 = D(r0, s0_1_0, 0x00020200, 0xF00F040F, 0xF201FEFF, 0x10F70600);
	r1 = D(r1, s0_1_0, 0xF90B0116, 0x0A0B01F4, 0x07190109, 0xEB030C1E);
	r2 = D(r2, s0_1_0, 0xFDFB03FF, 0x1117F401, 0xFBEB07F6, 0xFA29FEE2);
	r3 = D(r3, s0_1_0, 0x01E803E3, 0xFFFF0304, 0x0A15E3ED, 0x17F9FDF7);
	r4 = D(r4, s0_1_0, 0xD6F4F3EE, 0xDDE004FA, 0x00E3E402, 0xFDF20207);
	r5 = D(r5, s0_1_0, 0xFB110506, 0x03F403F2, 0x0EFBCEEB, 0xFBFA0300);
	r0 = D(r0, s0_1_1, 0x11020201, 0xAC2AEBF1, 0xE52E1DEA, 0x05F30DF9);
	r1 = D(r1, s0_1_1, 0xE3EE030A, 0xC40BF4EF, 0xE4E7FD12, 0x0D031219);
	r2 = D(r2, s0_1_1, 0x05EA04FB, 0xF8C8D10B, 0x0DDD1616, 0xE8F7FA0C);
	r3 = D(r3, s0_1_1, 0x20F21EF7, 0xFB0F0205, 0x1CE4E7F4, 0x1228F0FB);
	r4 = D(r4, s0_1_1, 0x1EF4FA0B, 0x31F9EEEF, 0xEAECEAFB, 0xF4CC000E);
	r5 = D(r5, s0_1_1, 0x0E1A01FA, 0x49E40200, 0x0AA8BCEB, 0x15100403);
	r0 = D(r0, s0_1_2, 0xF801FDFC, 0xF604F6F9, 0xEDF8280D, 0xF1F7FAFB);
	r1 = D(r1, s0_1_2, 0x0F0D050D, 0x04FB0A0E, 0xCDDF3202, 0xE517EA1C);
	r2 = D(r2, s0_1_2, 0x11E0F9F8, 0xF305EAFE, 0x09061402, 0xF508F901);
	r3 = D(r3, s0_1_2, 0xCCFE29F3, 0xE8FDF806, 0xDBDD01E9, 0xDD1798F3);
	r4 = D(r4, s0_1_2, 0xFF1210F6, 0xEEF304F0, 0x0702F805, 0x14FC01FA);
	r5 = D(r5, s0_1_2, 0x0402F507, 0xF8030405, 0xFF00E60E, 0xF606EA01);
	r0 = D(r0, s0_2_0, 0xFFFE0200, 0xF4EB01FD, 0x010902F6, 0x12F70802);
	r1 = D(r1, s0_2_0, 0x05040216, 0x01FAFE05, 0xF900FEFB, 0xF9170128);
	r2 = D(r2, s0_2_0, 0xF9F705F5, 0x0304FFF8, 0x00FAFFFB, 0xFAFE0000);
	r3 = D(r3, s0_2_0, 0xFBF5FCED, 0x00010103, 0x0B07FEEE, 0x08020FFC);
	r4 = D(r4, s0_2_0, 0xF3F9FBF3, 0x02E7FCF5, 0x0E0EFFFB, 0x00050301);
	r5 = D(r5, s0_2_0, 0xFCF60208, 0x0501FEF7, 0x000CF1DA, 0xF9F8FEFC);
	r0 = D(r0, s0_2_1, 0xFD0001FE, 0x07E407FE, 0x152500FE, 0x06D90407);
	r1 = D(r1, s0_2_1, 0xFF14FA16, 0xFDF501FF, 0x1717F9FE, 0xDEEB1423);
	r2 = D(r2, s0_2_1, 0x030B08F7, 0xF7DA0805, 0x101406FB, 0xFCFE0109);
	r3 = D(r3, s0_2_1, 0xF611FDF3, 0xFEFE0105, 0xF9BCEBF3, 0xD9D4020E);
	r4 = D(r4, s0_2_1, 0xE7CF1104, 0x0305FEF5, 0x06010502, 0xFC030206);
	r5 = D(r5, s0_2_1, 0x0FFA0605, 0x07F70201, 0xFC10EAC0, 0xFC050404);
	r0 = D(r0, s0_2_2, 0x01FE06FD, 0x08F703FB, 0xEF0AE8F7, 0x02F70BFC);
	r1 = D(r1, s0_2_2, 0x0107FD0C, 0xFC0303FE, 0x201A0307, 0xFD240824);
	r2 = D(r2, s0_2_2, 0xFCFAFCF9, 0xFEFE01FD, 0x06FEFCF9, 0xFA04FD09);
	r3 = D(r3, s0_2_2, 0xEBFEF6F4, 0xF10AF706, 0x00EFF6D9, 0xDB000B10);
	r4 = D(r4, s0_2_2, 0x0F1400F5, 0xF5FBFEEF, 0x0105F500, 0x0000FF03);
	r5 = D(r5, s0_2_2, 0xFBF706FE, 0x09030504, 0xF2C9F3EA, 0x0B05F008);
	r0 = D(r0, s1_0_0, 0x05FE0702, 0xFA17F20E, 0x03FF12F5, 0xFC0809F4);
	r1 = D(r1, s1_0_0, 0xF80901FA, 0x0CF91501, 0x0BFC0FEB, 0xFCE4F6F5);
	r2 = D(r2, s1_0_0, 0xF91007F9, 0xFB02FD09, 0xFA080AF6, 0x01030907);
	r3 = D(r3, s1_0_0, 0x02010FFD, 0x01FA0501, 0xF102FE13, 0x04F9F809);
	r4 = D(r4, s1_0_0, 0xFC0507FF, 0xFFE5FEEE, 0xFFFAEBFE, 0xF8020304);
	r5 = D(r5, s1_0_0, 0xFA04FDFC, 0x050800FA, 0x0BE90107, 0x010A06FF);
	r0 = D(r0, s1_0_1, 0x04EBE4EC, 0x001408F5, 0xF3F1080B, 0x0305F1F7);
	r1 = D(r1, s1_0_1, 0xF9F4EC06, 0x04FDFD01, 0xE9F5EA2C, 0x0ADAEAFB);
	r2 = D(r2, s1_0_1, 0x08F114FA, 0x08091CF6, 0xEDEDE704, 0xFD0203FB);
	r3 = D(r3, s1_0_1, 0xE80DE60B, 0x02000302, 0xE71A01FF, 0x061CF8F5);
	r4 = D(r4, s1_0_1, 0x0808F506, 0x00FCF9F9, 0x020DFB04, 0xEC004A05);
	r5 = D(r5, s1_0_1, 0xFDFFF208, 0x0510FFFF, 0x0615F817, 0xFFF9DFFE);
	r0 = D(r0, s1_0_2, 0x07FCFB03, 0xFA08F506, 0xFFFB0AFD, 0x0000FE0D);
	r1 = D(r1, s1_0_2, 0x03F80BF7, 0x08FF08F2, 0xFDF60A08, 0xFDD6FF0D);
	r2 = D(r2, s1_0_2, 0xF8F4F20F, 0x020905FB, 0xFCFA00FA, 0xFEFB00FF);
	r3 = D(r3, s1_0_2, 0xF307F60A, 0x02030AFC, 0xFF13F30B, 0x060EF3F9);
	r4 = D(r4, s1_0_2, 0x0502FE0B, 0xFE04FD0B, 0xFCFF0100, 0xFA010B01);
	r5 = D(r5, s1_0_2, 0x01FEFFFE, 0xFFFEFF01, 0xF817F2EB, 0x0DFE0001);
	r0 = D(r0, s1_1_0, 0xF8070BFD, 0xEC18CAFA, 0xF8F3D513, 0x081104F8);
	r1 = D(r1, s1_1_0, 0x0703F208, 0x030D1EFC, 0x04F4DE09, 0x02CCDA05);
	r2 = D(r2, s1_1_0, 0xF215FAFB, 0xF5092AF5, 0x03E6F0F0, 0xF515F319);
	r3 = D(r3, s1_1_0, 0x09F1F5FA, 0x00FEF304, 0x101FEF0E, 0xDFF802D0);
	r4 = D(r4, s1_1_0, 0xF9DFF2EC, 0x08AFEDCF, 0x180212F6, 0x08FA0602);
	r5 = D(r5, s1_1_0, 0xF5F2B6F6, 0x01EDFDFD, 0x03E5E20A, 0x03FDF1FC);
	r0 = D(r0, s1_1_1, 0x13F912FE, 0x081E3A07, 0x0A25A917, 0x18E81DDE);
	r1 = D(r1, s1_1_1, 0x00E0B9F5, 0xEDF489D2, 0x38C3E8EC, 0x180E1A00);
	r2 = D(r2, s1_1_1, 0x26E82C01, 0x19D603DE, 0x0DD0F6D5, 0x09FBFDF5);
	r3 = D(r3, s1_1_1, 0xE31C46E3, 0x190D5605, 0x2CC92BC6, 0x0AEA070B);
	r4 = D(r4, s1_1_1, 0xFA141713, 0xFFF80806, 0xD7D6060E, 0xF8E9E0FF);
	r5 = D(r5, s1_1_1, 0xF61D100B, 0xF0E91513, 0xFDB0FE0D, 0x0507132E);
	r0 = D(r0, s1_1_2, 0xFC0504FE, 0xEF05000E, 0x120BECEB, 0x0C04F5EF);
	r1 = D(r1, s1_1_2, 0x05FAFDFD, 0xFB0103FC, 0x01DAF6ED, 0xF1EB0A00);
	r2 = D(r2, s1_1_2, 0xF4E4F7FA, 0xF2F10701, 0x150304EF, 0x030003F9);
	r3 = D(r3, s1_1_2, 0x020C06F7, 0x07FAEA05, 0x02F7F7F0, 0xF4FC0C08);
	r4 = D(r4, s1_1_2, 0x0D0305EE, 0xFF0BFD00, 0xFC04FE08, 0xF90301FC);
	r5 = D(r5, s1_1_2, 0x06FFFFFD, 0x000509FB, 0x01F80F01, 0xF101F50A);
	r0 = D(r0, s1_2_0, 0x0404FFFB, 0x0007ECFE, 0xFFF9FDFD, 0xFEF80DED);
	r1 = D(r1, s1_2_0, 0x00FE0BFB, 0xFDFD0A00, 0x0301FD0D, 0x02F9F411);
	r2 = D(r2, s1_2_0, 0x060AF607, 0x02F900F1, 0xFFFD06F2, 0xFE070302);
	r3 = D(r3, s1_2_0, 0x0702F3FC, 0xFF00FE00, 0x020D17EB, 0x0DFCF5FB);
	r4 = D(r4, s1_2_0, 0x000400F5, 0xFDEB08F0, 0xFE0702FC, 0x02010302);
	r5 = D(r5, s1_2_0, 0xF5FDFDEE, 0x0BFAFE0D, 0xDF19011C, 0x0900F90C);
	r0 = D(r0, s1_2_1, 0x0004FE01, 0xFFFBFDF0, 0xF3140909, 0x0BEFF0EE);
	r1 = D(r1, s1_2_1, 0xFEFB01FC, 0x00040409, 0xEB0A0EFA, 0x04EFEB12);
	r2 = D(r2, s1_2_1, 0xFC0A02F9, 0x03EBF6E1, 0xF60B0EF7, 0xFBFAFD02);
	r3 = D(r3, s1_2_1, 0x0311F1F3, 0x03040800, 0x03E5F1E7, 0x0100D1E4);
	r4 = D(r4, s1_2_1, 0xFD03EEF0, 0xFFFEFE00, 0x090105FF, 0x00FFFB01);
	r5 = D(r5, s1_2_1, 0xF40504F2, 0xFCFAF5FD, 0x0DE3EA08, 0x04000006);
	r0 = D(r0, s1_2_2, 0xFE05FFF9, 0x000501FB, 0x01FFFB06, 0x0A0405E8);
	r1 = D(r1, s1_2_2, 0xFDFD0007, 0xFC01FD0D, 0x03080614, 0x08ECFB05);
	r2 = D(r2, s1_2_2, 0x030102FA, 0x010401F0, 0xFE020102, 0x02FCFEFD);
	r3 = D(r3, s1_2_2, 0x0B06FDFD, 0x070204FF, 0xFA03FEE8, 0x14FB07D8);
	r4 = D(r4, s1_2_2, 0x05FA0205, 0x0007FFFD, 0xFCFC0501, 0xFB020102);
	r5 = D(r5, s1_2_2, 0xFE04FFFC, 0xFCFC00FB, 0x07F804EE, 0xFFFF020B);
	s0_0_0 = G[4][xy.y+0][xy.x+0]; s0_0_1 = G[4][xy.y+0][xy.x+1];
	s0_0_2 = G[4][xy.y+0][xy.x+2]; s0_1_0 = G[4][xy.y+1][xy.x+0];
	s0_1_1 = G[4][xy.y+1][xy.x+1]; s0_1_2 = G[4][xy.y+1][xy.x+2];
	s0_2_0 = G[4][xy.y+2][xy.x+0]; s0_2_1 = G[4][xy.y+2][xy.x+1];
	s0_2_2 = G[4][xy.y+2][xy.x+2]; s1_0_0 = G[5][xy.y+0][xy.x+0];
	s1_0_1 = G[5][xy.y+0][xy.x+1]; s1_0_2 = G[5][xy.y+0][xy.x+2];
	s1_1_0 = G[5][xy.y+1][xy.x+0]; s1_1_1 = G[5][xy.y+1][xy.x+1];
	s1_1_2 = G[5][xy.y+1][xy.x+2]; s1_2_0 = G[5][xy.y+2][xy.x+0];
	s1_2_1 = G[5][xy.y+2][xy.x+1]; s1_2_2 = G[5][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xF80101FF, 0x00F4FAFA, 0x0306F801, 0xEFFFE408);
	r1 = D(r1, s0_0_0, 0x0700FAF2, 0x0408F103, 0x06FEF8F2, 0x1F19FB0C);
	r2 = D(r2, s0_0_0, 0x00FE03EC, 0xF1FCFB0A, 0x05FE06F8, 0xEA05F610);
	r3 = D(r3, s0_0_0, 0xFF030BF7, 0xFD02F7FF, 0xF109EDDC, 0x1AF91013);
	r4 = D(r4, s0_0_0, 0x0EF72101, 0x08050C01, 0x15FD14F6, 0x0303F904);
	r5 = D(r5, s0_0_0, 0x0500FF05, 0x03FDFA00, 0xF0C505F8, 0x05FE05F7);
	r0 = D(r0, s0_0_1, 0xF705F6DE, 0x05F80D0B, 0xEB03F70B, 0xFCF60106);
	r1 = D(r1, s0_0_1, 0xF801FB05, 0x1504D700, 0x1805BFF1, 0x041AFFFA);
	r2 = D(r2, s0_0_1, 0x07F71D13, 0xFB0D0006, 0x00FBEBEA, 0xED05FF09);
	r3 = D(r3, s0_0_1, 0xF5ED10F4, 0xF000FEFE, 0x04E0261A, 0x19141B15);
	r4 = D(r4, s0_0_1, 0xEAE41013, 0xE1ED0505, 0x09FD16FD, 0x1000050E);
	r5 = D(r5, s0_0_1, 0x020E0107, 0x00FF0703, 0x1FE61BF3, 0xEC0311D8);
	r0 = D(r0, s0_0_2, 0xFA08FF00, 0xFAFD04FA, 0xF803030C, 0xED040207);
	r1 = D(r1, s0_0_2, 0x0008040A, 0x1A05EF0A, 0x23110E06, 0xF41F0407);
	r2 = D(r2, s0_0_2, 0xEEFE00F6, 0x0701F5FE, 0x0000EE01, 0xFAFC0201);
	r3 = D(r3, s0_0_2, 0x03F70EF6, 0x08050007, 0xFEDC17EE, 0xFE071903);
	r4 = D(r4, s0_0_2, 0xD602030F, 0x01FBFEF2, 0x04FD0600, 0x08060102);
	r5 = D(r5, s0_0_2, 0xEB05FFFF, 0xF7FD0005, 0x20D91DA7, 0xEAFF0E04);
	r0 = D(r0, s0_1_0, 0xF4FFF8F8, 0xFBF8FB12, 0x16011012, 0xF9FD04FC);
	r1 = D(r1, s0_1_0, 0xFF03FFF9, 0xF60BF7FE, 0x1312D5DB, 0x0C14082C);
	r2 = D(r2, s0_1_0, 0x06EE0EFE, 0xEE0CE1F9, 0x0FFC050E, 0x09130612);
	r3 = D(r3, s0_1_0, 0x0BF8100D, 0x02020003, 0xFFE605DA, 0x13F8E7EB);
	r4 = D(r4, s0_1_0, 0x24103607, 0xF3EE0E13, 0x02002DF4, 0x01FFFF00);
	r5 = D(r5, s0_1_0, 0x050B0211, 0xFEF4070D, 0x0EDB15C2, 0x02FA1D03);
	r0 = D(r0, s0_1_1, 0xFD08FAF7, 0x0E4911FB, 0x161D081C, 0xF3E00201);
	r1 = D(r1, s0_1_1, 0x0A0806DF, 0xC91FFEFA, 0x1AE008DE, 0x10FC0218);
	r2 = D(r2, s0_1_1, 0x05121418, 0x00FD0900, 0xE8E8F3FB, 0x07F90904);
	r3 = D(r3, s0_1_1, 0x101FE60B, 0xF2FAECE4, 0x29D3FA18, 0x2FBDCCF1);
	r4 = D(r4, s0_1_1, 0xD7F80719, 0xBEF70E05, 0xFFF9E2DC, 0x07050109);
	r5 = D(r5, s0_1_1, 0x11B90802, 0xECF5F906, 0x2FCAEE0E, 0x12131D02);
	r0 = D(r0, s0_1_2, 0xF702ED01, 0xEB04F9FD, 0x060610FC, 0xEDE5F206);
	r1 = D(r1, s0_1_2, 0x030AFC06, 0xF80F0103, 0x1ED3E6EA, 0x08EFF318);
	r2 = D(r2, s0_1_2, 0xF3E1FDF7, 0xF3E7FD01, 0xFDEEF606, 0xFEFF0202);
	r3 = D(r3, s0_1_2, 0x09FBFFFD, 0xF115FFF8, 0xE3B0F6F9, 0xF7BAF0F3);
	r4 = D(r4, s0_1_2, 0xDED50710, 0x0607F7FB, 0x07EC0AEF, 0x04F7F6FF);
	r5 = D(r5, s0_1_2, 0x0C0B02FF, 0xF5EFFB07, 0xDECA14CE, 0xFFFE0501);
	r0 = D(r0, s0_2_0, 0xFFFFFA01, 0x00F6F604, 0x060111FA, 0x03FFFE04);
	r1 = D(r1, s0_2_0, 0x0008F9F9, 0xFB06FD02, 0x010D03F3, 0xFE05F60E);
	r2 = D(r2, s0_2_0, 0x01000400, 0xFFFEF704, 0x02FEFFFF, 0x01FEFBFE);
	r3 = D(r3, s0_2_0, 0x00FE030A, 0x0202FFFE, 0xFDF9F1F8, 0x02F1DA00);
	r4 = D(r4, s0_2_0, 0x08160A07, 0x0208030A, 0x020905FE, 0xFF00FAFF);
	r5 = D(r5, s0_2_0, 0x00020200, 0x03FBFB0A, 0xFDD408CD, 0x02010AFE);
	r0 = D(r0, s0_2_1, 0x0201FD03, 0x0AF80603, 0x040DF2F5, 0x02F3F814);
	r1 = D(r1, s0_2_1, 0x01130400, 0xFE00F5FA, 0xFA1CD7FD, 0x0CE10D26);
	r2 = D(r2, s0_2_1, 0x05FF0500, 0x05F2ED00, 0xF607F809, 0x01000905);
	r3 = D(r3, s0_2_1, 0x04FCE40A, 0xFB02FCFC, 0x01C9FF13, 0x20CFF2F5);
	r4 = D(r4, s0_2_1, 0xF2BC0612, 0xEAF50603, 0x0EF312FA, 0x05030200);
	r5 = D(r5, s0_2_1, 0xFFFEFBFD, 0xFF02FC07, 0x0C0811F0, 0x050312FE);
	r0 = D(r0, s0_2_2, 0x02F9FEFE, 0xFEFE02FE, 0xF809F100, 0x02EB0207);
	r1 = D(r1, s0_2_2, 0xFF080403, 0xF60505FD, 0xF615F905, 0x0704FD18);
	r2 = D(r2, s0_2_2, 0xFC0805FF, 0x04FBF4FF, 0xF6F805F9, 0xFEFE0301);
	r3 = D(r3, s0_2_2, 0x09F0F8F9, 0x0302FEFE, 0x07A3E2FB, 0x2CF107FE);
	r4 = D(r4, s0_2_2, 0x00F117FE, 0x050702F2, 0x06FE0202, 0x0100F902);
	r5 = D(r5, s0_2_2, 0xF905FE00, 0x0AF8FF01, 0x1EA400F7, 0x00020405);
	r0 = D(r0, s1_0_0, 0xFC00FC03, 0x0AFDFBFD, 0xFFFFFF02, 0xF4FB0505);
	r1 = D(r1, s1_0_0, 0x060B01FF, 0xF9FE0402, 0xF4FF03FD, 0x100703FA);
	r2 = D(r2, s1_0_0, 0xFF020204, 0xF9FE0603, 0x0808FFFC, 0x0E0AFEFF);
	r3 = D(r3, s1_0_0, 0x05FEFEFF, 0xFFFFFF01, 0x0C0203FA, 0x1100FA00);
	r4 = D(r4, s1_0_0, 0x06FAFE05, 0x02FAF707, 0x0802FFF9, 0x01FEFBFC);
	r5 = D(r5, s1_0_0, 0x0200FB05, 0x0003FE01, 0xFEEB16FC, 0x070201FF);
	r0 = D(r0, s1_0_1, 0xEE051AFD, 0x0702E903, 0x01FF0800, 0xF0FB0600);
	r1 = D(r1, s1_0_1, 0x02FAF701, 0x081312FA, 0xEFE30EF4, 0x14FDEFF8);
	r2 = D(r2, s1_0_1, 0xED000502, 0xF2090204, 0x01FDFE03, 0xFE0BFB00);
	r3 = D(r3, s1_0_1, 0xFBFDFDFD, 0x01FFFD00, 0xF5FEDD02, 0x0205060F);
	r4 = D(r4, s1_0_1, 0x10010203, 0x05000BFF, 0xF506F303, 0x1402120A);
	r5 = D(r5, s1_0_1, 0x0C01EE05, 0xFB030605, 0xFA030E06, 0xFC0002FF);
	r0 = D(r0, s1_0_2, 0xFE0306FE, 0xF1FDEC03, 0xEC010B02, 0xF4FB1003);
	r1 = D(r1, s1_0_2, 0x0C0CF2FE, 0xF80D0502, 0xFC0B1BFF, 0x170221F7);
	r2 = D(r2, s1_0_2, 0xF1FF0EFF, 0xFEF9FFFE, 0xFE02E805, 0x0A020FFF);
	r3 = D(r3, s1_0_2, 0x04FEDD02, 0x010303FE, 0x0202E309, 0xF1F12600);
	r4 = D(r4, s1_0_2, 0xF5FC00FA, 0xFEED04FF, 0x0502F4FC, 0x08ECF901);
	r5 = D(r5, s1_0_2, 0xFB040500, 0x0600FE02, 0x04FF81EB, 0x14FAF2FA);
	r0 = D(r0, s1_1_0, 0x0003FF05, 0x1201F7FC, 0x11FCFBF7, 0xED000301);
	r1 = D(r1, s1_1_0, 0xFF0400EB, 0xF7090103, 0xF4FCFF05, 0x12F6F9F7);
	r2 = D(r2, s1_1_0, 0x0705FC00, 0xEA0AFB00, 0x0EFCFCF9, 0x1800EC81);
	r3 = D(r3, s1_1_0, 0x03ED0809, 0xFC010100, 0xF5FEFE02, 0xF1F504FA);
	r4 = D(r4, s1_1_0, 0x36F4FFFF, 0x24F8FFFD, 0x05F403F4, 0x030002F2);
	r5 = D(r5, s1_1_0, 0x0702F3F2, 0xFAFA0602, 0x01D10101, 0x0DFD04F7);
	r0 = D(r0, s1_1_1, 0xFA05FC53, 0x0DECEA13, 0x2BFCF407, 0xEBFD170E);
	r1 = D(r1, s1_1_1, 0xD213EBDF, 0xEA0801AC, 0xE60504FA, 0xFA08F704);
	r2 = D(r2, s1_1_1, 0xF9FEEE17, 0xDA030DFB, 0xEC1C110E, 0x1118F4FA);
	r3 = D(r3, s1_1_1, 0xF81FFD15, 0xFF02FD01, 0xE805100A, 0xD3DC09FE);
	r4 = D(r4, s1_1_1, 0xBD0F0F0E, 0x1BFE19F9, 0xF8EC19DC, 0xFBFD0281);
	r5 = D(r5, s1_1_1, 0x3006E10C, 0xE5000F07, 0x05E10CF3, 0x0FF0FB06);
	r0 = D(r0, s1_1_2, 0x00048106, 0xEC06DC0B, 0xDF0E33FF, 0xF7F61705);
	r1 = D(r1, s1_1_2, 0x1201FEF2, 0xEA1511F7, 0x0CCA09F5, 0xFD09D2FA);
	r2 = D(r2, s1_1_2, 0xE508E4FC, 0x09F30EFA, 0x0EEBDA0F, 0x0AFE0803);
	r3 = D(r3, s1_1_2, 0x0DE8DB16, 0xD505FEF3, 0x00011819, 0x12BE3A07);
	r4 = D(r4, s1_1_2, 0xFDF0E101, 0xF7F4FD06, 0xF506D3FB, 0x080214EF);
	r5 = D(r5, s1_1_2, 0xFDFCF802, 0x0301FDF9, 0x0CDF12F9, 0xFCFEEBF7);
	r0 = D(r0, s1_2_0, 0x02010001, 0x07F700FA, 0xFFFFF805, 0xEF000100);
	r1 = D(r1, s1_2_0, 0xFF04FCFB, 0x040802FA, 0x080AFFF9, 0xFC06F401);
	r2 = D(r2, s1_2_0, 0x0500FDFF, 0x0005FFFF, 0xFD020308, 0xFEFCFEF1);
	r3 = D(r3, s1_2_0, 0x030003FF, 0x0201FFFC, 0xE909FFF2, 0xF1FC0505);
	r4 = D(r4, s1_2_0, 0x11F8F20B, 0xFCFFFE09, 0xF2F80116, 0xFC03FF01);
	r5 = D(r5, s1_2_0, 0x02FF0007, 0xFCFF07FB, 0xE4F2EF06, 0x05F4FEF4);
	r0 = D(r0, s1_2_1, 0x0408FF00, 0x13FFFAF3, 0xEEF0F8B6, 0xEB050DF0);
	r1 = D(r1, s1_2_1, 0xFB09FD14, 0xFA0B04FD, 0x0FF5FF07, 0x1414F2DF);
	r2 = D(r2, s1_2_1, 0x0402FCFA, 0x060606FB, 0x0307061A, 0x03F80505);
	r3 = D(r3, s1_2_1, 0x0DFD00D4, 0x0905FEF4, 0xEBF414E3, 0xFF1702E1);
	r4 = D(r4, s1_2_1, 0x001B0AE4, 0x15F304ED, 0xEF010621, 0xFEFFFE08);
	r5 = D(r5, s1_2_1, 0x0DFFFCE9, 0xF90306FD, 0xF8C9EAF0, 0x04F3FFE6);
	r0 = D(r0, s1_2_2, 0x0503FDFE, 0xFFFE04FE, 0xEEF10203, 0x04020DFD);
	r1 = D(r1, s1_2_2, 0x0004F8FA, 0x040106F5, 0xEDEC8EF9, 0x0B0117F8);
	r2 = D(r2, s1_2_2, 0xFD00EC08, 0x0E000BF7, 0xFA0108FE, 0x030500FF);
	r3 = D(r3, s1_2_2, 0xFB020F08, 0xFDFE0312, 0x0EF81405, 0x0319EA06);
	r4 = D(r4, s1_2_2, 0x09EAF0FD, 0x0403F50C, 0xF0FDFF07, 0x0205FBFD);
	r5 = D(r5, s1_2_2, 0x0601FC02, 0x00FD14FC, 0x02F981F7, 0xF8F20103);
	f0 = vec4(r0) * 6.2000124e-05;
	f0 = clamp(f0, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 0), f0);
	f1 = vec4(r1) * 6.2000124e-05;
	f1 = clamp(f1, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 0), f1);
	f2 = vec4(r2) * 6.2000124e-05;
	f2 = clamp(f2, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 0), f2);
	f3 = vec4(r3) * 6.2000124e-05;
	f3 = clamp(f3, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 1), f3);
	f4 = vec4(r4) * 6.2000124e-05;
	f4 = clamp(f4, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 1), f4);
	f5 = vec4(r5) * 6.2000124e-05;
	f5 = clamp(f5, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 1), f5);
}

//!DESC [CuNNy_4x24_SOFT_vk] -conv4
//!HOOK LUMA
//!COMPUTE 24 16 8 8
//!BIND conv3
//!BIND LUMA
//!SAVE conv4
//!WIDTH LUMA.w 3 *
//!HEIGHT LUMA.h 2 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w 1.200 * > OUTPUT.h LUMA.h 1.200 * > *
#extension GL_EXT_spirv_intrinsics : require
#define l0(x, y) (conv3_mul * texelFetch(conv3_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(0, 0), 0))
#define l1(x, y) (conv3_mul * texelFetch(conv3_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(1, 0), 0))
#define l2(x, y) (conv3_mul * texelFetch(conv3_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(2, 0), 0))
#define l3(x, y) (conv3_mul * texelFetch(conv3_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(0, 1), 0))
#define l4(x, y) (conv3_mul * texelFetch(conv3_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(1, 1), 0))
#define l5(x, y) (conv3_mul * texelFetch(conv3_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(2, 1), 0))
spirv_instruction (extensions = ["SPV_KHR_integer_dot_product"], capabilities = [6019, 6018], id = 4450)
int dp4(int a, int b, spirv_literal int fmt);
#define D(r, s, a, b, c, d) r + ivec4(dp4(s, a, 0), dp4(s, b, 0), dp4(s, c, 0), dp4(s, d, 0))
shared int G[6][10][10];
void hook() {
	ivec2 xy = ivec2(gl_LocalInvocationID.xy);
	ivec2 pos = ivec2(gl_WorkGroupID.xy) * ivec2(8, 8) + xy;
	ivec2 opos = pos * ivec2(3, 2);
	ivec2 sz = ivec2(LUMA_size) - ivec2(1);
	for (int y = 0; y < 10; y += 8) {
		int ay = xy.y + y;
		if (ay >= 10) break;
		for (int x = 0; x < 10; x += 8) {
			int ax = xy.x + x;
			if (ax >= 10) break;
			vec4 v0 = l0(x - 1, y - 1);
			vec4 v1 = l1(x - 1, y - 1);
			vec4 v2 = l2(x - 1, y - 1);
			vec4 v3 = l3(x - 1, y - 1);
			vec4 v4 = l4(x - 1, y - 1);
			vec4 v5 = l5(x - 1, y - 1);
			G[0][ay][ax] = int(packSnorm4x8(v0));
			G[1][ay][ax] = int(packSnorm4x8(v1));
			G[2][ay][ax] = int(packSnorm4x8(v2));
			G[3][ay][ax] = int(packSnorm4x8(v3));
			G[4][ay][ax] = int(packSnorm4x8(v4));
			G[5][ay][ax] = int(packSnorm4x8(v5));
		}
	}
	barrier();
	int s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;
	ivec4 r0, r1, r2, r3, r4, r5;
	vec4 f0, f1, f2, f3, f4, f5;
	r0 = ivec4(0); r1 = ivec4(0); r2 = ivec4(0); r3 = ivec4(0); r4 = ivec4(0); r5 = ivec4(0);
	s0_0_0 = G[0][xy.y+0][xy.x+0]; s0_0_1 = G[0][xy.y+0][xy.x+1];
	s0_0_2 = G[0][xy.y+0][xy.x+2]; s0_1_0 = G[0][xy.y+1][xy.x+0];
	s0_1_1 = G[0][xy.y+1][xy.x+1]; s0_1_2 = G[0][xy.y+1][xy.x+2];
	s0_2_0 = G[0][xy.y+2][xy.x+0]; s0_2_1 = G[0][xy.y+2][xy.x+1];
	s0_2_2 = G[0][xy.y+2][xy.x+2]; s1_0_0 = G[1][xy.y+0][xy.x+0];
	s1_0_1 = G[1][xy.y+0][xy.x+1]; s1_0_2 = G[1][xy.y+0][xy.x+2];
	s1_1_0 = G[1][xy.y+1][xy.x+0]; s1_1_1 = G[1][xy.y+1][xy.x+1];
	s1_1_2 = G[1][xy.y+1][xy.x+2]; s1_2_0 = G[1][xy.y+2][xy.x+0];
	s1_2_1 = G[1][xy.y+2][xy.x+1]; s1_2_2 = G[1][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xFAF400FD, 0xF40609FA, 0x00E507FE, 0x0CF10CF5);
	r1 = D(r1, s0_0_0, 0x04020005, 0x04E301FE, 0x05FFFF00, 0xF9EB03FA);
	r2 = D(r2, s0_0_0, 0xE109E208, 0x0A010100, 0xFF0000FD, 0xFF000000);
	r3 = D(r3, s0_0_0, 0x04000103, 0xF6F3FEFC, 0x000000FF, 0x04F905FF);
	r4 = D(r4, s0_0_0, 0x02EEF703, 0xFAF5FFFC, 0xFFFD04FD, 0xF7F001FD);
	r5 = D(r5, s0_0_0, 0x00FF03FE, 0xFF00FFFF, 0xFD02FB03, 0xFCFD0200);
	r0 = D(r0, s0_0_1, 0x16FEF101, 0x0BA00000, 0x0FF405FC, 0x0981E4E6);
	r1 = D(r1, s0_0_1, 0xF80A06FE, 0x00050700, 0x02030201, 0x0FFDFDFE);
	r2 = D(r2, s0_0_1, 0xF8F6ECF7, 0xF5040AFA, 0xEEF7FF03, 0xFE040001);
	r3 = D(r3, s0_0_1, 0xF0000000, 0xD1CCFF09, 0xFC00FE00, 0xFBE2F6FF);
	r4 = D(r4, s0_0_1, 0xF9060002, 0xF9BB0DF6, 0xFFFF0000, 0x11E0FEFD);
	r5 = D(r5, s0_0_1, 0xF60602FE, 0xFFEBFD00, 0xFAF20104, 0xFB020400);
	r0 = D(r0, s0_0_2, 0xF9FAFA00, 0xF406F4F9, 0xFBFBFFFD, 0xDCD2EAFD);
	r1 = D(r1, s0_0_2, 0xFDFFFEFE, 0xFBF903FE, 0xF50401FE, 0xFAFE02FF);
	r2 = D(r2, s0_0_2, 0xF5F90704, 0xF4FB00FE, 0xFDFF0001, 0xFB000000);
	r3 = D(r3, s0_0_2, 0xFA03FE01, 0xECECF9FD, 0x000000FF, 0xFF070302);
	r4 = D(r4, s0_0_2, 0xFC030300, 0x09E115F9, 0x0101FF00, 0x0EE2FB04);
	r5 = D(r5, s0_0_2, 0x000102FE, 0x07DB0CFC, 0xFDFF01FD, 0xFDFD08FE);
	r0 = D(r0, s0_1_0, 0xF6F409FD, 0xE9080DF0, 0xE1F61000, 0xE21613FF);
	r1 = D(r1, s0_1_0, 0x01C6F8FC, 0xF3FFF802, 0xF7F00903, 0xF8FCEBFB);
	r2 = D(r2, s0_1_0, 0xF9F41C2E, 0x10A30602, 0xFC02FD08, 0xFF02FE01);
	r3 = D(r3, s0_1_0, 0xFEFF0303, 0xEBFDF9F5, 0xFF01FD01, 0xFBF30500);
	r4 = D(r4, s0_1_0, 0xF7F1E032, 0xFB0207FE, 0xF6F907F7, 0x00F903EF);
	r5 = D(r5, s0_1_0, 0xFA0AFCFE, 0xFCFF0003, 0xF0FB0203, 0xFF0100F9);
	r0 = D(r0, s0_1_1, 0xF30CEC35, 0x08ED9813, 0x05F5DA0D, 0x07EDCC08);
	r1 = D(r1, s0_1_1, 0xF5EDEAED, 0xFA01EB04, 0xF4EBB2F6, 0x17FFEF06);
	r2 = D(r2, s0_1_1, 0xEBEF20F7, 0xECE9DDEF, 0xF205FC31, 0xFEFDFD03);
	r3 = D(r3, s0_1_1, 0xFFF0EB0B, 0xEEA5D014, 0xF7FDEA09, 0xECE1D31E);
	r4 = D(r4, s0_1_1, 0xFEF7DCF2, 0xD881EAEF, 0xF9F3E8F9, 0xFFF8F5F1);
	r5 = D(r5, s0_1_1, 0xF3E4FEFD, 0xEEEA1004, 0x11CF0A08, 0xF6F3FE02);
	r0 = D(r0, s0_1_2, 0xFBF9FDFC, 0xE5F703F8, 0xF501F7FA, 0xF7FCEAF9);
	r1 = D(r1, s0_1_2, 0x04050001, 0xF803FE07, 0xFC02F404, 0xF7FD02FD);
	r2 = D(r2, s0_1_2, 0xFCF508F6, 0xDFEFFD06, 0xFD02FE0A, 0x0201FA00);
	r3 = D(r3, s0_1_2, 0xF707EC0E, 0xF8F6F5FF, 0xFC000102, 0xFF07EE06);
	r4 = D(r4, s0_1_2, 0x0502FCFC, 0xDABADC28, 0x020000FE, 0x11E102EC);
	r5 = D(r5, s0_1_2, 0x06F3F303, 0x09BE0EE8, 0xCEDF0807, 0xDDF4FAFD);
	r0 = D(r0, s0_2_0, 0xFF0003F8, 0xF80209F3, 0xFBFC06F6, 0xF10500E7);
	r1 = D(r1, s0_2_0, 0xFE08F011, 0xF802F1F5, 0x0306FEFB, 0xFC04F20A);
	r2 = D(r2, s0_2_0, 0xF5000010, 0xF2FD05FB, 0x02FF0102, 0x000100FF);
	r3 = D(r3, s0_2_0, 0xFDFE050C, 0xF805060B, 0xFE00FE09, 0x0204040C);
	r4 = D(r4, s0_2_0, 0x010209FE, 0xF50CFE01, 0xFD01FFF5, 0xE5FEFBF9);
	r5 = D(r5, s0_2_0, 0xFD00FC03, 0xFCFC0402, 0xE70AFB05, 0xF40603F2);
	r0 = D(r0, s0_2_1, 0xFCFFFCFE, 0xF902F417, 0xFDFE01F4, 0xFD0DFC01);
	r1 = D(r1, s0_2_1, 0xF209F8FB, 0xFF01EEFF, 0xFA05DF16, 0x0803FDFA);
	r2 = D(r2, s0_2_1, 0x03FD0103, 0xECFACBFD, 0xFEFDFEFB, 0xFAF4F9ED);
	r3 = D(r3, s0_2_1, 0xFC060A20, 0xF508052B, 0x01FFFD00, 0x0205000B);
	r4 = D(r4, s0_2_1, 0xFD05F513, 0xF500E6F3, 0xFC0001F8, 0xECF6E500);
	r5 = D(r5, s0_2_1, 0xFCF8D8F4, 0xFA0606F7, 0x09FDF281, 0xF6F6F3E5);
	r0 = D(r0, s0_2_2, 0x0201FF00, 0xF80907EF, 0xFE0203FD, 0x0A0A01F1);
	r1 = D(r1, s0_2_2, 0x01030005, 0xFF000002, 0xFE0403FC, 0xF7010100);
	r2 = D(r2, s0_2_2, 0xF3FB05FD, 0xF203E4F3, 0xFEFF01FF, 0xFB0102FE);
	r3 = D(r3, s0_2_2, 0xFCFD02FF, 0xF2050308, 0xFD00FF00, 0xF906FEFE);
	r4 = D(r4, s0_2_2, 0xFE03FFFF, 0xCFFE021F, 0x02000000, 0xF5F5EA18);
	r5 = D(r5, s0_2_2, 0xDD03E017, 0xFA04E229, 0xE8FB04C4, 0xF4F0EDFA);
	r0 = D(r0, s1_0_0, 0xFE06FCE4, 0xE40B0000, 0x0102FFF3, 0xCB0205E6);
	r1 = D(r1, s1_0_0, 0xEF0C02F6, 0xF50EFEE3, 0xFD07FFFE, 0x06FE04F5);
	r2 = D(r2, s1_0_0, 0xF30AE9F6, 0xE70802F9, 0x00FDFF00, 0xFF020000);
	r3 = D(r3, s1_0_0, 0xFBFFFFFD, 0xD9F90209, 0x01F9FF00, 0xFDEBFCFE);
	r4 = D(r4, s1_0_0, 0x02E6FB09, 0xD00D0B01, 0x0202FF00, 0xB6F00210);
	r5 = D(r5, s1_0_0, 0xF90600FC, 0xBCFE00ED, 0xFCF802F5, 0x000C01FF);
	r0 = D(r0, s1_0_1, 0xFD0DEB01, 0xFAF9E4F5, 0x05F9FAED, 0xEC0DF8F3);
	r1 = D(r1, s1_0_1, 0xFFFDFEFB, 0x05FE00F2, 0xF40CFFFE, 0x0505FFF4);
	r2 = D(r2, s1_0_1, 0x14FEF7DC, 0xE3FC0409, 0x00F60405, 0x02FDFF00);
	r3 = D(r3, s1_0_1, 0x05F1FF00, 0xEFDB0B11, 0xFE04FDFD, 0xF6F80211);
	r4 = D(r4, s1_0_1, 0xF7120007, 0xC42803F1, 0xFE0001FE, 0xD0F80417);
	r5 = D(r5, s1_0_1, 0x0704FEFF, 0xDF0403F8, 0xFA03F9FC, 0x00FAFCFF);
	r0 = D(r0, s1_0_2, 0x03FF0207, 0xDCFB08FB, 0xFF01F9FC, 0xF518DEE2);
	r1 = D(r1, s1_0_2, 0x0100FFFF, 0xFD030002, 0x07FF02FE, 0xF80201FE);
	r2 = D(r2, s1_0_2, 0x0B0508FC, 0xFA00FD01, 0xFCFAFFFD, 0xFE010000);
	r3 = D(r3, s1_0_2, 0xFBFCF9FA, 0xE201F916, 0xFF0101FF, 0x0003FD02);
	r4 = D(r4, s1_0_2, 0xFEFDFD04, 0xD901FFCB, 0x00FD00FF, 0xA20DFB13);
	r5 = D(r5, s1_0_2, 0xF9FEFEF7, 0xD211FDEC, 0x06FA08FC, 0x0203F9FA);
	r0 = D(r0, s1_1_0, 0x030F01F8, 0xE5F2F1CC, 0x00EE01EC, 0xE113010E);
	r1 = D(r1, s1_1_0, 0x12F9E5DA, 0xFDCBC507, 0x0206FE07, 0xE5EB0E1C);
	r2 = D(r2, s1_1_0, 0x01F8F311, 0xFA0106F9, 0xFFF7FEFE, 0x02FEFE00);
	r3 = D(r3, s1_1_0, 0xFF0901FD, 0xF20BF7F1, 0x010BFF06, 0x0606000A);
	r4 = D(r4, s1_1_0, 0x0829F8D0, 0xFC150506, 0xFDF1F2FF, 0xDCF5FC06);
	r5 = D(r5, s1_1_0, 0x020B03FF, 0xCAFBFFF8, 0xFFFDF901, 0xFCE90303);
	r0 = D(r0, s1_1_1, 0xFFC0E8F6, 0x1AF9B4AB, 0xF70ACDFF, 0xF201DDC1);
	r1 = D(r1, s1_1_1, 0x02ED0BEA, 0xFC0508F7, 0x0EE9E8ED, 0x0723DBF1);
	r2 = D(r2, s1_1_1, 0x07F9F9F8, 0xFFFBF6DA, 0xF9F4E40F, 0xFD09F601);
	r3 = D(r3, s1_1_1, 0xFC0CF1FE, 0x0A20D6C6, 0xFC05F603, 0x131904B5);
	r4 = D(r4, s1_1_1, 0x13E7F9F4, 0xF519CBEC, 0x02060EFA, 0xDFF3FEE9);
	r5 = D(r5, s1_1_1, 0xF50E03F0, 0xE90DFDE1, 0x16F5EB81, 0xFAF0FC02);
	r0 = D(r0, s1_1_2, 0x0710FCF8, 0xEAE71602, 0x090108FA, 0xE105D9E0);
	r1 = D(r1, s1_1_2, 0xFD00FE02, 0xFEFE0100, 0xF401FEFB, 0x08FB01FB);
	r2 = D(r2, s1_1_2, 0xFD0401FB, 0xEF20EAFB, 0xFF06FB07, 0x02FC01FF);
	r3 = D(r3, s1_1_2, 0xF90301F8, 0xF222EFDC, 0x02FF0201, 0xF6FEF30C);
	r4 = D(r4, s1_1_2, 0xF9090300, 0xF9C8B8FA, 0xFEFFFF02, 0xE1FED3BD);
	r5 = D(r5, s1_1_2, 0x02FCF408, 0xCFE4DC0E, 0x01FE0FFD, 0x0005FB0E);
	r0 = D(r0, s1_2_0, 0xFF0301FD, 0xEE060CFC, 0x00FFF8FA, 0xF50CFAEF);
	r1 = D(r1, s1_2_0, 0x02F904E7, 0x0502FC01, 0xFDFAF902, 0xFEF6FCE7);
	r2 = D(r2, s1_2_0, 0x00FA0105, 0xF0100D0B, 0x00020000, 0xFD04FFFF);
	r3 = D(r3, s1_2_0, 0x01F5FAF9, 0xDCFB0900, 0xFF01FE01, 0xF9FEFA02);
	r4 = D(r4, s1_2_0, 0xF9FB05F5, 0xD7FF06F9, 0x00F701FF, 0xC8F4F5FF);
	r5 = D(r5, s1_2_0, 0xFDFD03FB, 0xBC01FCF2, 0xF301FCEE, 0xFE11F501);
	r0 = D(r0, s1_2_1, 0x000503FE, 0xFBEBF7DE, 0x000006F8, 0xF6E502F8);
	r1 = D(r1, s1_2_1, 0xFC08FE00, 0x00FF00FD, 0x020A06FA, 0xF9FCFE04);
	r2 = D(r2, s1_2_1, 0x040706FA, 0xE3A2C09E, 0x0306FEFF, 0xFF0E10F9);
	r3 = D(r3, s1_2_1, 0xEDF6EBF6, 0xDFE7F3FD, 0xFEF9FE03, 0xFDF0F00A);
	r4 = D(r4, s1_2_1, 0x0002FE02, 0x01001AF0, 0x000B06FA, 0xE1EEE3DD);
	r5 = D(r5, s1_2_1, 0x06FCFC07, 0xE3F4FBEE, 0xFD1E2602, 0x043E09F4);
	r0 = D(r0, s1_2_2, 0xFFF903FD, 0xF0090DFD, 0xFD020000, 0xD301F2F7);
	r1 = D(r1, s1_2_2, 0xFF01FD03, 0xF80505F9, 0xFD0604F8, 0xFF05FFFB);
	r2 = D(r2, s1_2_2, 0x04080EF7, 0xD51AE806, 0xFDFB0100, 0xFB0203FC);
	r3 = D(r3, s1_2_2, 0x01F1FBF9, 0xEAF0FEFB, 0x000300FE, 0x010506F9);
	r4 = D(r4, s1_2_2, 0x0100FE01, 0xD81F1BEE, 0x00FDFE02, 0xD6F6F5FF);
	r5 = D(r5, s1_2_2, 0xFA01FDE9, 0xCCEFEF01, 0xFF3421CB, 0x0E138281);
	s0_0_0 = G[2][xy.y+0][xy.x+0]; s0_0_1 = G[2][xy.y+0][xy.x+1];
	s0_0_2 = G[2][xy.y+0][xy.x+2]; s0_1_0 = G[2][xy.y+1][xy.x+0];
	s0_1_1 = G[2][xy.y+1][xy.x+1]; s0_1_2 = G[2][xy.y+1][xy.x+2];
	s0_2_0 = G[2][xy.y+2][xy.x+0]; s0_2_1 = G[2][xy.y+2][xy.x+1];
	s0_2_2 = G[2][xy.y+2][xy.x+2]; s1_0_0 = G[3][xy.y+0][xy.x+0];
	s1_0_1 = G[3][xy.y+0][xy.x+1]; s1_0_2 = G[3][xy.y+0][xy.x+2];
	s1_1_0 = G[3][xy.y+1][xy.x+0]; s1_1_1 = G[3][xy.y+1][xy.x+1];
	s1_1_2 = G[3][xy.y+1][xy.x+2]; s1_2_0 = G[3][xy.y+2][xy.x+0];
	s1_2_1 = G[3][xy.y+2][xy.x+1]; s1_2_2 = G[3][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xFA14E910, 0xFD0C0503, 0xFE0206F9, 0xFA110AFE);
	r1 = D(r1, s0_0_0, 0x071602FF, 0xFD07EE01, 0x04010100, 0xFAFE0808);
	r2 = D(r2, s0_0_0, 0xF9E2FDE0, 0x0802F807, 0x01FBFDF4, 0xFFFF0000);
	r3 = D(r3, s0_0_0, 0xFC020305, 0x08FDFB08, 0x01FCFD05, 0xFE0000F7);
	r4 = D(r4, s0_0_0, 0xFCDA0EFC, 0x0DFDF909, 0x0101F704, 0xEF07F70E);
	r5 = D(r5, s0_0_0, 0xFF03FFFF, 0xF3FEFD07, 0x030BF701, 0x0306FEFE);
	r0 = D(r0, s0_0_1, 0x06E7F1EE, 0x10EA060E, 0x10F6F4FF, 0xE612FD25);
	r1 = D(r1, s0_0_1, 0x09020701, 0x12F7FA03, 0x0702FDFE, 0x010A0001);
	r2 = D(r2, s0_0_1, 0x81FDF402, 0xFBFE0401, 0xFEEB0EF4, 0xFF0002FB);
	r3 = D(r3, s0_0_1, 0x02FE0608, 0x0DDCEF13, 0xFF0202FE, 0x0BE90EFF);
	r4 = D(r4, s0_0_1, 0xF6F7FE05, 0x0710EF0A, 0xFF0A0D00, 0xEDE80903);
	r5 = D(r5, s0_0_1, 0x04020603, 0x0109010B, 0x080A0D00, 0x06FFF801);
	r0 = D(r0, s0_0_2, 0xEB04F404, 0xF505F700, 0xFB070100, 0xA0F5180A);
	r1 = D(r1, s0_0_2, 0x00030200, 0xFF010101, 0x01010401, 0xFFF700FF);
	r2 = D(r2, s0_0_2, 0xE9010502, 0xFAFB070A, 0x0505FEFA, 0x00FFFEFF);
	r3 = D(r3, s0_0_2, 0x07020701, 0xEAEB1103, 0x02FEFE00, 0xF0000105);
	r4 = D(r4, s0_0_2, 0x07FC0503, 0x080FE20B, 0x00F9FD02, 0xF2F8F008);
	r5 = D(r5, s0_0_2, 0xFA090803, 0xE4090707, 0xFFFAE804, 0x02030502);
	r0 = D(r0, s0_1_0, 0xFBF4F0E5, 0xFF1DEE05, 0xF1FCF4CE, 0xF206F2EC);
	r1 = D(r1, s0_1_0, 0x0F152CE8, 0xF8FD030D, 0x02E602F7, 0xFEFBFD03);
	r2 = D(r2, s0_1_0, 0xEDF6FEF8, 0x03F8F30C, 0x010406FA, 0x00F7FC09);
	r3 = D(r3, s0_1_0, 0xFFFE06F8, 0x0F0207FB, 0x010B0BFB, 0x04F20805);
	r4 = D(r4, s0_1_0, 0x0B0102FE, 0x0AFAF9EC, 0x0005D22D, 0xE3E0F902);
	r5 = D(r5, s0_1_0, 0x0002040C, 0x040204FE, 0xFAF305A0, 0xFE0BFD08);
	r0 = D(r0, s0_1_1, 0xFEE00B0E, 0x12E50418, 0x0DFF351E, 0xEB29042A);
	r1 = D(r1, s0_1_1, 0xD90CF2F8, 0xE8F514FE, 0xF03B2D02, 0xC6ED26FD);
	r2 = D(r2, s0_1_1, 0x8403F6D1, 0xEE1B1425, 0x06EE0D12, 0x020CE608);
	r3 = D(r3, s0_1_1, 0xFA56F417, 0x1E1EE208, 0x03051C02, 0xF2381AF1);
	r4 = D(r4, s0_1_1, 0xC719D80A, 0x0EFE021D, 0xF804F0EF, 0xD7DD0306);
	r5 = D(r5, s0_1_1, 0xFB0CF212, 0x090BFA0D, 0xFBCD27A6, 0x04ABD0FC);
	r0 = D(r0, s0_1_2, 0xEEFEFC05, 0xCDFCF210, 0xF4080902, 0xB4B53C21);
	r1 = D(r1, s0_1_2, 0xF8FD0702, 0x0AFD0203, 0xE9F80400, 0x030901FF);
	r2 = D(r2, s0_1_2, 0xF3FDF3FA, 0x9FEF1E02, 0x81F40208, 0xFEFAFB01);
	r3 = D(r3, s0_1_2, 0xE6FA0903, 0x81FAFDF9, 0xFD010300, 0xCCF61007);
	r4 = D(r4, s0_1_2, 0xEEFD05FF, 0xB9FC1014, 0x02FD0100, 0xCDFDFE0F);
	r5 = D(r5, s0_1_2, 0x0CFB0A09, 0xE51407E3, 0xE508DFEB, 0xF3EBFEFB);
	r0 = D(r0, s0_2_0, 0x0103FF03, 0xFC09F709, 0xF903FC00, 0xEB02FB15);
	r1 = D(r1, s0_2_0, 0x03FE0105, 0x0406F200, 0x0200FE03, 0xFCFFF701);
	r2 = D(r2, s0_2_0, 0xF7F6DCE9, 0x0BE7FEF9, 0x0000FEFE, 0x000400FF);
	r3 = D(r3, s0_2_0, 0xFC010907, 0x04F406F9, 0x0002FCFD, 0x00FDFFFF);
	r4 = D(r4, s0_2_0, 0xFDF40802, 0x0208F614, 0xFF03FA16, 0xF1F5F812);
	r5 = D(r5, s0_2_0, 0xFD05FFFC, 0x0103FCFF, 0x0302ECEA, 0x0110FD00);
	r0 = D(r0, s0_2_1, 0x03FF0201, 0x1208F8FE, 0xFF090103, 0x0611040F);
	r1 = D(r1, s0_2_1, 0xEEFD0200, 0xE6FFFA03, 0x02FAE8F6, 0x96F30309);
	r2 = D(r2, s0_2_1, 0x09F9E6F0, 0xF1302269, 0x0003FEF5, 0xFF0DE8FD);
	r3 = D(r3, s0_2_1, 0xEDF00700, 0xFBE30CF6, 0xFDFD0208, 0xF7F8080D);
	r4 = D(r4, s0_2_1, 0xF3F8FCFD, 0x0510DD0F, 0x06FEFDF9, 0xFDEFF60D);
	r5 = D(r5, s0_2_1, 0xFF112406, 0xF0FCFC01, 0x0414D70E, 0xFDF0230B);
	r0 = D(r0, s0_2_2, 0xFC020005, 0xE100FEFB, 0xF4040405, 0xE3010D09);
	r1 = D(r1, s0_2_2, 0x0BFE0302, 0xFD0101FF, 0xFD020602, 0xF800FA02);
	r2 = D(r2, s0_2_2, 0x08FDF3F7, 0x12E31714, 0x020000FD, 0x0FFA00FB);
	r3 = D(r3, s0_2_2, 0xE903050B, 0xE2F90AFE, 0x03FFFF00, 0xF9010805);
	r4 = D(r4, s0_2_2, 0xF8000504, 0xEDEFF5F5, 0xFFFF02FF, 0xF6F2051C);
	r5 = D(r5, s0_2_2, 0x9DFAEDFF, 0xDBFDFCF5, 0x01E681FD, 0xD0F5000E);
	r0 = D(r0, s1_0_0, 0xF5042A00, 0xFFFF0304, 0xF20BF9FA, 0xFAF7FB1C);
	r1 = D(r1, s1_0_0, 0x00F606FE, 0xF405F201, 0x0001FEFC, 0x07FEF001);
	r2 = D(r2, s1_0_0, 0x0B420E19, 0xFF060302, 0x0109F303, 0xFEFFFF01);
	r3 = D(r3, s1_0_0, 0x0402F800, 0x1105ED05, 0xFF01FD00, 0x0001F501);
	r4 = D(r4, s1_0_0, 0xF705F9F3, 0x0011F90A, 0xF6070507, 0x0405F8FC);
	r5 = D(r5, s1_0_0, 0x0201FC02, 0x0409FA02, 0x030907FA, 0x03FA09F9);
	r0 = D(r0, s1_0_1, 0x05170905, 0xFC12FC1B, 0xE40C020F, 0x2E1CE99F);
	r1 = D(r1, s1_0_1, 0xF9FD01FF, 0xF612FB00, 0xFE03FB0B, 0xFDFEFCFC);
	r2 = D(r2, s1_0_1, 0x1620F8F4, 0x0003F5F7, 0xFE01FBFC, 0x0002FF00);
	r3 = D(r3, s1_0_1, 0x0102F9FE, 0x1122FB0A, 0xFC0BFF00, 0xFF0AF609);
	r4 = D(r4, s1_0_1, 0x01F80009, 0xF906D407, 0x02F9FEF2, 0xF9FCFD02);
	r5 = D(r5, s1_0_1, 0xFDF7FC01, 0xF9F407FA, 0x090B02FB, 0x03030800);
	r0 = D(r0, s1_0_2, 0xFCFCFBFD, 0x0AF2FD03, 0xFB0001FD, 0xBA29FC08);
	r1 = D(r1, s1_0_2, 0x0103FF05, 0xF802FF04, 0xFB07FE02, 0x09FFFFFF);
	r2 = D(r2, s1_0_2, 0x0B09F9F9, 0xF60EFB13, 0x00050102, 0xFE000000);
	r3 = D(r3, s1_0_2, 0x01FE0001, 0x0C0DFF00, 0x03FEFF02, 0xFF04FF07);
	r4 = D(r4, s1_0_2, 0x04040008, 0xEC1EEE16, 0x00010002, 0xF70EFC11);
	r5 = D(r5, s1_0_2, 0xFEFE0001, 0xF61EF8FD, 0x0EFBFAFC, 0xF5EFF802);
	r0 = D(r0, s1_1_0, 0x0401F50A, 0xFCFD1C07, 0x17123806, 0xFA211DF8);
	r1 = D(r1, s1_1_0, 0x091C26B8, 0x041803E6, 0xFB0B030E, 0xF810D3FC);
	r2 = D(r2, s1_1_0, 0x1EF7E5D9, 0x0C09F816, 0xFDFCF5FC, 0x0203FE01);
	r3 = D(r3, s1_1_0, 0xF8040BF8, 0x191003F4, 0x05FFC7F9, 0x060000E4);
	r4 = D(r4, s1_1_0, 0xE8EE2AF1, 0x1F12F105, 0xEE064704, 0x0105FCFF);
	r5 = D(r5, s1_1_0, 0x06FD0106, 0x0907FFFC, 0x0BF6DCFE, 0x0BE303FD);
	r0 = D(r0, s1_1_1, 0xFF0014FC, 0xE01F0CC4, 0x08F8FFF9, 0xC4FADBE3);
	r1 = D(r1, s1_1_1, 0x0DFBFAFF, 0x04FE00FF, 0x11F6FEC6, 0x0111000C);
	r2 = D(r2, s1_1_1, 0xF60200E5, 0xEEFBE8AA, 0xF7FA0305, 0xF7210403);
	r3 = D(r3, s1_1_1, 0x020906CB, 0xEE2BFED9, 0xF40B0104, 0xE306F600);
	r4 = D(r4, s1_1_1, 0xFFEFFAFA, 0x2135EEB8, 0x02F6FFF5, 0x1207F515);
	r5 = D(r5, s1_1_1, 0x0702000F, 0x0C1F0CF3, 0x290B36F7, 0x0C170716);
	r0 = D(r0, s1_1_2, 0xF8FB0200, 0xF401FA08, 0x0B01FB00, 0x0607F00A);
	r1 = D(r1, s1_1_2, 0xFD000003, 0x090100FE, 0x0408FF05, 0x08FCFE01);
	r2 = D(r2, s1_1_2, 0x080300F2, 0xF114FB10, 0x08FAFF02, 0x0305FF07);
	r3 = D(r3, s1_1_2, 0xF50BFC01, 0xFD22F609, 0x09FBFFFF, 0xFFFB00FD);
	r4 = D(r4, s1_1_2, 0x0504FC06, 0x120C09E6, 0x02030004, 0x0C15FB11);
	r5 = D(r5, s1_1_2, 0x000EFF07, 0x0DE904F9, 0x34DE08D8, 0x1A180F09);
	r0 = D(r0, s1_2_0, 0x0500FE04, 0x0B04FF00, 0x00030100, 0xF80FFFFF);
	r1 = D(r1, s1_2_0, 0xFAFDF709, 0xFAFFF705, 0xFDFDF700, 0xF604FCF9);
	r2 = D(r2, s1_2_0, 0x0C060A05, 0xFA2600D4, 0x01FDFFFF, 0xFEFBF4FB);
	r3 = D(r3, s1_2_0, 0x0207EDFF, 0x04FEF30C, 0xFE00F801, 0xFE03F703);
	r4 = D(r4, s1_2_0, 0xFF000BFE, 0x00020903, 0x040909FC, 0x0E071208);
	r5 = D(r5, s1_2_0, 0xFE04FEFF, 0x0409FA05, 0x0B02FCF7, 0xFDFBE7FB);
	r0 = D(r0, s1_2_1, 0xFE0401FB, 0x0308FFFB, 0xFA03FBFB, 0x0311E5FD);
	r1 = D(r1, s1_2_1, 0x0407FD03, 0xFE03FFFF, 0xEC04F605, 0x0DF402FE);
	r2 = D(r2, s1_2_1, 0x0E0204F4, 0xF3FFE1DA, 0x02FF00FF, 0xEB01F800);
	r3 = D(r3, s1_2_1, 0xFDFCF1FF, 0x0AF4E800, 0x00FC00FD, 0x02FAFAF7);
	r4 = D(r4, s1_2_1, 0x010000FC, 0xDD0D0906, 0xFB00FEFD, 0x0D170105);
	r5 = D(r5, s1_2_1, 0xEAFFF9FB, 0x06110001, 0x0F22FDFC, 0xFE1FB904);
	r0 = D(r0, s1_2_2, 0x00FDFF00, 0x06FFFC05, 0x0000FF02, 0x0EFBF602);
	r1 = D(r1, s1_2_2, 0xF601FE03, 0xFD020102, 0x00FEFE03, 0xFF02FF00);
	r2 = D(r2, s1_2_2, 0x000500F7, 0x1700F113, 0xFF0000FF, 0xFE0300FE);
	r3 = D(r3, s1_2_2, 0x07FCF9FC, 0x05FF03FD, 0x01000101, 0x00FFFE06);
	r4 = D(r4, s1_2_2, 0xFD00FF03, 0x091BF802, 0x07FEFF01, 0x0609F7F8);
	r5 = D(r5, s1_2_2, 0xE90EFE09, 0x060FFF02, 0x111FF5FB, 0xFF150A14);
	s0_0_0 = G[4][xy.y+0][xy.x+0]; s0_0_1 = G[4][xy.y+0][xy.x+1];
	s0_0_2 = G[4][xy.y+0][xy.x+2]; s0_1_0 = G[4][xy.y+1][xy.x+0];
	s0_1_1 = G[4][xy.y+1][xy.x+1]; s0_1_2 = G[4][xy.y+1][xy.x+2];
	s0_2_0 = G[4][xy.y+2][xy.x+0]; s0_2_1 = G[4][xy.y+2][xy.x+1];
	s0_2_2 = G[4][xy.y+2][xy.x+2]; s1_0_0 = G[5][xy.y+0][xy.x+0];
	s1_0_1 = G[5][xy.y+0][xy.x+1]; s1_0_2 = G[5][xy.y+0][xy.x+2];
	s1_1_0 = G[5][xy.y+1][xy.x+0]; s1_1_1 = G[5][xy.y+1][xy.x+1];
	s1_1_2 = G[5][xy.y+1][xy.x+2]; s1_2_0 = G[5][xy.y+2][xy.x+0];
	s1_2_1 = G[5][xy.y+2][xy.x+1]; s1_2_2 = G[5][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x04FDFF0B, 0x000E0713, 0xFBFA0003, 0xFAF4EE20);
	r1 = D(r1, s0_0_0, 0x01120CFD, 0x02F1FEFF, 0x00FFFFFC, 0xFBF5FC05);
	r2 = D(r2, s0_0_0, 0x1EECA81B, 0x040001F3, 0x020CFDF9, 0x0000FE00);
	r3 = D(r3, s0_0_0, 0xFFFD04FD, 0xFB070108, 0x0101FD02, 0x03FE03F5);
	r4 = D(r4, s0_0_0, 0xFBFBF016, 0xFC00040E, 0x0201FEF4, 0x0506F5F7);
	r5 = D(r5, s0_0_0, 0xFDFF0301, 0x0304FEFE, 0x05FFFEFC, 0x0502010C);
	r0 = D(r0, s0_0_1, 0xFAC2270F, 0xFFF50D0C, 0x020117F5, 0x00FC4EE0);
	r1 = D(r1, s0_0_1, 0x01000501, 0xFEF8F503, 0x00FA07FF, 0xFF0003FA);
	r2 = D(r2, s0_0_1, 0xFE1CFCF0, 0xF7F90A1A, 0xFF320701, 0xFEFA02FF);
	r3 = D(r3, s0_0_1, 0x020003FF, 0xFF0CFD0F, 0x00FB04FC, 0xFCFF0209);
	r4 = D(r4, s0_0_1, 0x03EF19FC, 0x07121816, 0xFE010A02, 0xF90EEE0B);
	r5 = D(r5, s0_0_1, 0x00020701, 0xFEFF0407, 0x00141115, 0x02F9FDF9);
	r0 = D(r0, s0_0_2, 0xFF0F0104, 0x01FB1804, 0x0302FF01, 0xE2C4E604);
	r1 = D(r1, s0_0_2, 0xFF000104, 0x00040601, 0xFE01FEFD, 0xFF08FE02);
	r2 = D(r2, s0_0_2, 0xFCFDFD02, 0x03010000, 0x01080EFB, 0x0002FEFE);
	r3 = D(r3, s0_0_2, 0x05FEFDFE, 0xFDF71002, 0x0000FE01, 0x00F307FA);
	r4 = D(r4, s0_0_2, 0xFEFCFAFE, 0xFCF00CF4, 0x00FCFEFE, 0xFC1EFF02);
	r5 = D(r5, s0_0_2, 0xFF020202, 0xF4FD0301, 0xFAF00AF1, 0x0008F70B);
	r0 = D(r0, s0_1_0, 0xF401F9FE, 0xFA04F50A, 0x000AF806, 0x0D1608F4);
	r1 = D(r1, s0_1_0, 0xF6DD03FE, 0x2F0700FB, 0x020503ED, 0x130FF912);
	r2 = D(r2, s0_1_0, 0xD4FA110F, 0xFE0110E9, 0xFEFE0104, 0x02030102);
	r3 = D(r3, s0_1_0, 0x020503FD, 0x0F000A03, 0x04FB02F8, 0xF50003F8);
	r4 = D(r4, s0_1_0, 0xF0F608DB, 0x07F80A07, 0xFC0302FC, 0x000205F0);
	r5 = D(r5, s0_1_0, 0xF8FC03FC, 0xFD04FEF7, 0xFBFA05F8, 0x080501FF);
	r0 = D(r0, s0_1_1, 0xFE0713FA, 0xEDD933FC, 0x23191EF7, 0xF2E100E2);
	r1 = D(r1, s0_1_1, 0x121AFE03, 0xFC0DE2D6, 0x09E4E32E, 0xE9E7C7F1);
	r2 = D(r2, s0_1_1, 0x07F31DFB, 0xFD000022, 0xF3F4FD05, 0x0218F608);
	r3 = D(r3, s0_1_1, 0x00C2FFF4, 0xD7DE0FE7, 0xFBF73AFA, 0x0DE1D91F);
	r4 = D(r4, s0_1_1, 0xFD0DF405, 0x32EAFDFC, 0xFCF2E411, 0x24F9B01E);
	r5 = D(r5, s0_1_1, 0x03F80006, 0x03070302, 0xB7F4EC34, 0xFB1306F7);
	r0 = D(r0, s0_1_2, 0xFA07FD03, 0x00FB1312, 0x0602FF07, 0xF2E80EFE);
	r1 = D(r1, s0_1_2, 0x02F100FF, 0x00FC0805, 0x0200F6F7, 0xFE0A0D0D);
	r2 = D(r2, s0_1_2, 0x0009F904, 0xF1ED1CEC, 0xFDE2EFF2, 0xFEFEF6FA);
	r3 = D(r3, s0_1_2, 0x01FFF5F8, 0x08E61AFA, 0xFE020000, 0xF010EFF0);
	r4 = D(r4, s0_1_2, 0x01FDFDFC, 0xF9D41615, 0x00FF02FC, 0x111A12DD);
	r5 = D(r5, s0_1_2, 0x01F804FB, 0x2AE8060F, 0xF1350326, 0xFA1DEC14);
	r0 = D(r0, s0_2_0, 0xFD02FE03, 0xFB02FF01, 0x0003FDFE, 0x01F60605);
	r1 = D(r1, s0_2_0, 0x29F8FF06, 0x08FE03FA, 0xFDFF0101, 0xFE020800);
	r2 = D(r2, s0_2_0, 0xF802020B, 0xFC0526FA, 0x02000201, 0x08FF0301);
	r3 = D(r3, s0_2_0, 0xFD01FDF8, 0x0B000008, 0xFF01FCFE, 0xF8FEFEFF);
	r4 = D(r4, s0_2_0, 0xF4010709, 0x0200FD0C, 0xFA01FB05, 0x0208EE09);
	r5 = D(r5, s0_2_0, 0x04FEFA09, 0xFB01FEFB, 0xF4010105, 0x04070300);
	r0 = D(r0, s0_2_1, 0xF3FE03FF, 0x01FA1FFB, 0xF7FD0002, 0xE2F7F2F9);
	r1 = D(r1, s0_2_1, 0x05071A0D, 0x0DFF020E, 0x12FD08F6, 0xF20207FE);
	r2 = D(r2, s0_2_1, 0x0506FEFD, 0xE8F3FB12, 0x02FEFF02, 0x48F503FB);
	r3 = D(r3, s0_2_1, 0xFF00030E, 0xF709FF11, 0x00FB0204, 0xEB000703);
	r4 = D(r4, s0_2_1, 0xF80303F4, 0x26FB0101, 0xF9F71D00, 0xFAF7DA09);
	r5 = D(r5, s0_2_1, 0x14FCFDDB, 0x07F60602, 0xF8FC09F2, 0xEF0309CF);
	r0 = D(r0, s0_2_2, 0xFD010203, 0xFF001214, 0x04060606, 0x04F52C0F);
	r1 = D(r1, s0_2_2, 0xFEFDFD01, 0xFF010002, 0x09FF0501, 0x0203FE00);
	r2 = D(r2, s0_2_2, 0x05FB0904, 0xF8F11EF8, 0x02FE0002, 0x0CFD0401);
	r3 = D(r3, s0_2_2, 0x0E01FCFD, 0x0E02F501, 0xFF01FF00, 0xFF040603);
	r4 = D(r4, s0_2_2, 0x01020102, 0xF1F7F50D, 0xFE0300FE, 0xEB08040E);
	r5 = D(r5, s0_2_2, 0x0D03F001, 0xF0FA0104, 0xF005E829, 0xFBFBE31B);
	r0 = D(r0, s1_0_0, 0x100DF7FE, 0x030105F9, 0x1310FB01, 0x15F5FF02);
	r1 = D(r1, s1_0_0, 0x0401FA02, 0x1B01F302, 0xFD0302FE, 0xFF000504);
	r2 = D(r2, s1_0_0, 0xF5EBF4F0, 0x090A04FB, 0xE4210703, 0xFFFA0001);
	r3 = D(r3, s1_0_0, 0xFFFB05FD, 0xF3160CFF, 0xFC0C0400, 0xF303FD00);
	r4 = D(r4, s1_0_0, 0xF90B10FF, 0x090D06FC, 0xF900FE01, 0x0707FB07);
	r5 = D(r5, s1_0_0, 0x0310FD01, 0x07090401, 0x001009FD, 0xFE09FBFF);
	r0 = D(r0, s1_0_1, 0xF42408C8, 0xFA17FAFD, 0xFC06DE0A, 0x0C0BEBE5);
	r1 = D(r1, s1_0_1, 0xFBF5F6F2, 0xEC04F8F9, 0xFDF9F5FF, 0xFC0D0411);
	r2 = D(r2, s1_0_1, 0x1BC7FB16, 0xF6FBF8F9, 0xCF1DF6FC, 0xFD060001);
	r3 = D(r3, s1_0_1, 0xFD090202, 0xEDF507F7, 0xFEEF0105, 0x0CF705FE);
	r4 = D(r4, s1_0_1, 0xFFE4FBF0, 0x1EEFFCFA, 0x0403F9FE, 0xEE0BF105);
	r5 = D(r5, s1_0_1, 0xFC0DF8FC, 0xFBF00306, 0xFC11F1F4, 0xF906FEFD);
	r0 = D(r0, s1_0_2, 0xFEF80BF6, 0x00EBF4FF, 0xFEFEFF07, 0xE1DF031D);
	r1 = D(r1, s1_0_2, 0xFE00FCFF, 0xFFFE0200, 0xFE000201, 0x0100FEFD);
	r2 = D(r2, s1_0_2, 0xFAFF0207, 0xF1E9FD05, 0x01FFFD03, 0x01F90200);
	r3 = D(r3, s1_0_2, 0x04F90204, 0x09F5F5F7, 0x01FE0002, 0xF6F90B09);
	r4 = D(r4, s1_0_2, 0x00FC01FE, 0xF907ED10, 0xFFF800FF, 0x0009F518);
	r5 = D(r5, s1_0_2, 0x030A0004, 0x0A00FCFB, 0xFD12F9FD, 0xFB0AFA00);
	r0 = D(r0, s1_1_0, 0xF5000604, 0xDF161106, 0xED050808, 0xEEFDFE05);
	r1 = D(r1, s1_1_0, 0xD60C0FED, 0xE40616F5, 0x08FCF909, 0xED161D02);
	r2 = D(r2, s1_1_0, 0x032FEC08, 0xFDE500F8, 0xFF0BFE00, 0xF1080200);
	r3 = D(r3, s1_1_0, 0x01FB00FD, 0x050601F1, 0x0100FFFD, 0x11E4F901);
	r4 = D(r4, s1_1_0, 0x23ECEEE9, 0x0706FBF5, 0xF4FA10FF, 0x080BF408);
	r5 = D(r5, s1_1_0, 0xF90B01FA, 0xFF0007FC, 0x0811FD04, 0xF906F606);
	r0 = D(r0, s1_1_1, 0x1F07FEEF, 0x02E701B2, 0xFA111FC8, 0x34D2F7D9);
	r1 = D(r1, s1_1_1, 0x1C020EF0, 0x14FA2416, 0xF01E42FE, 0x01D3E932);
	r2 = D(r2, s1_1_1, 0x1B0CF201, 0xCD111D11, 0xF1FE0A02, 0x00000A00);
	r3 = D(r3, s1_1_1, 0x05E5FAED, 0xED16F9E0, 0xFEF92523, 0xD0141E20);
	r4 = D(r4, s1_1_1, 0x0D1C0EF7, 0xA80F0EDC, 0xF922C6BE, 0xFF05F43A);
	r5 = D(r5, s1_1_1, 0x09080BFB, 0x0609FAFD, 0x2FE2F639, 0xE3FBECFC);
	r0 = D(r0, s1_1_2, 0xFD170202, 0xE2F5F5FF, 0x0603FA04, 0xDD15F21D);
	r1 = D(r1, s1_1_2, 0xFD020601, 0xFC03FAF8, 0x04F80402, 0x0003FDFE);
	r2 = D(r2, s1_1_2, 0x05F8F50E, 0xFE03DF2C, 0xFA0FFDFC, 0xFEF9F6FA);
	r3 = D(r3, s1_1_2, 0xF906F911, 0xE816FEF8, 0x0002FE00, 0x0A060410);
	r4 = D(r4, s1_1_2, 0x02F402FE, 0xD210EED8, 0x04EF0401, 0x1008F016);
	r5 = D(r5, s1_1_2, 0xFEFDF3F8, 0x1017EE19, 0xF3FD13EE, 0xF3F111FF);
	r0 = D(r0, s1_2_0, 0xFEFF0003, 0xF8FD0500, 0xFB03FE02, 0xE908F6FD);
	r1 = D(r1, s1_2_0, 0x10F4F4FA, 0x08F2FEF9, 0xFEFD00FA, 0x06F4FFFF);
	r2 = D(r2, s1_2_0, 0x05E7FCFE, 0x2BF4F6EA, 0x02F90100, 0xFFF6FEFF);
	r3 = D(r3, s1_2_0, 0x01050001, 0xF9000706, 0x01EE0002, 0xFD0205FF);
	r4 = D(r4, s1_2_0, 0xF60307F9, 0xE8030C04, 0xF90200FF, 0xF8040908);
	r5 = D(r5, s1_2_0, 0x07F7FB02, 0x0400FE04, 0xFC0C05F9, 0xFBFBFE01);
	r0 = D(r0, s1_2_1, 0xFE0000FD, 0x1C01FEED, 0x01040001, 0x1607F815);
	r1 = D(r1, s1_2_1, 0xE202EEF5, 0xFA00FFFD, 0x03EBFCFF, 0x110B0B05);
	r2 = D(r2, s1_2_1, 0x0804F706, 0xD11E14FF, 0xFEFF0001, 0x07F9FCF1);
	r3 = D(r3, s1_2_1, 0xF0090A0C, 0xF113FF05, 0xFE050302, 0xFFEC07FD);
	r4 = D(r4, s1_2_1, 0x00F7FFEE, 0x1602F4EB, 0xFA1701FF, 0xE603F906);
	r5 = D(r5, s1_2_1, 0xEB06F9E7, 0xF9050708, 0x080108F8, 0x30F2D208);
	r0 = D(r0, s1_2_2, 0xFB0101FF, 0xE01CFC04, 0xFCFF00FE, 0xF82AE6FF);
	r1 = D(r1, s1_2_2, 0xFBF7FD02, 0xFF0C03FF, 0xF80C0603, 0xFB0000FC);
	r2 = D(r2, s1_2_2, 0x0400F802, 0x29DBE1FA, 0x02120403, 0xFF0E0CFC);
	r3 = D(r3, s1_2_2, 0x01FF0100, 0x0EFB0AFF, 0x010501FF, 0x020402FC);
	r4 = D(r4, s1_2_2, 0x0603FFFF, 0x02E3DBFC, 0x01FBFF00, 0x151223EA);
	r5 = D(r5, s1_2_2, 0xD815FD05, 0x0F13FFFA, 0x00D3EA0C, 0x04D00040);
	f0 = vec4(r0) * 6.2000124e-05;
	f0 = clamp(f0, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 0), f0);
	f1 = vec4(r1) * 6.2000124e-05;
	f1 = clamp(f1, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 0), f1);
	f2 = vec4(r2) * 6.2000124e-05;
	f2 = clamp(f2, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 0), f2);
	f3 = vec4(r3) * 6.2000124e-05;
	f3 = clamp(f3, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 1), f3);
	f4 = vec4(r4) * 6.2000124e-05;
	f4 = clamp(f4, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 1), f4);
	f5 = vec4(r5) * 6.2000124e-05;
	f5 = clamp(f5, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 1), f5);
}

//!DESC [CuNNy_4x24_SOFT_vk] -out-shuffle
//!HOOK LUMA
//!COMPUTE 16 16 8 8
//!BIND conv4
//!BIND LUMA
//!WIDTH LUMA.w 2 *
//!HEIGHT LUMA.h 2 *
//!COMPONENTS 1
//!WHEN OUTPUT.w LUMA.w 1.200 * > OUTPUT.h LUMA.h 1.200 * > *
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable
#ifdef GL_EXT_shader_explicit_arithmetic_types_float16
#	define V4 f16vec4
#	define M4 f16mat4
#	define F float16_t
#else
#	define V4 vec4
#	define M4 mat4
#	define F float
#endif
#define l0(x, y) V4((conv4_mul * texelFetch(conv4_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(0, 0), 0)))
#define l1(x, y) V4((conv4_mul * texelFetch(conv4_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(1, 0), 0)))
#define l2(x, y) V4((conv4_mul * texelFetch(conv4_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(2, 0), 0)))
#define l3(x, y) V4((conv4_mul * texelFetch(conv4_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(0, 1), 0)))
#define l4(x, y) V4((conv4_mul * texelFetch(conv4_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(1, 1), 0)))
#define l5(x, y) V4((conv4_mul * texelFetch(conv4_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(3, 2) + ivec2(2, 1), 0)))
shared V4 G[6][10][10];
void hook() {
	ivec2 xy = ivec2(gl_LocalInvocationID.xy);
	ivec2 pos = ivec2(gl_WorkGroupID.xy) * ivec2(8, 8) + xy;
	ivec2 opos = pos * ivec2(2, 2);
	ivec2 sz = ivec2(LUMA_size) - ivec2(1);
	for (int y = 0; y < 10; y += 8) {
		int ay = xy.y + y;
		if (ay >= 10) break;
		for (int x = 0; x < 10; x += 8) {
			int ax = xy.x + x;
			if (ax >= 10) break;
			G[0][ay][ax] = l0(x - 1, y - 1);
			G[1][ay][ax] = l1(x - 1, y - 1);
			G[2][ay][ax] = l2(x - 1, y - 1);
			G[3][ay][ax] = l3(x - 1, y - 1);
			G[4][ay][ax] = l4(x - 1, y - 1);
			G[5][ay][ax] = l5(x - 1, y - 1);
		}
	}
	barrier();
	V4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;
	V4 r0;
	r0 = V4(0.0);
	s0_0_0 = G[0][xy.y+0][xy.x+0]; s0_0_1 = G[0][xy.y+0][xy.x+1];
	s0_0_2 = G[0][xy.y+0][xy.x+2]; s0_1_0 = G[0][xy.y+1][xy.x+0];
	s0_1_1 = G[0][xy.y+1][xy.x+1]; s0_1_2 = G[0][xy.y+1][xy.x+2];
	s0_2_0 = G[0][xy.y+2][xy.x+0]; s0_2_1 = G[0][xy.y+2][xy.x+1];
	s0_2_2 = G[0][xy.y+2][xy.x+2]; s1_0_0 = G[1][xy.y+0][xy.x+0];
	s1_0_1 = G[1][xy.y+0][xy.x+1]; s1_0_2 = G[1][xy.y+0][xy.x+2];
	s1_1_0 = G[1][xy.y+1][xy.x+0]; s1_1_1 = G[1][xy.y+1][xy.x+1];
	s1_1_2 = G[1][xy.y+1][xy.x+2]; s1_2_0 = G[1][xy.y+2][xy.x+0];
	s1_2_1 = G[1][xy.y+2][xy.x+1]; s1_2_2 = G[1][xy.y+2][xy.x+2];
	r0 += M4(2.833e-06, -3.597e-06, 8.755e-06, -5.127e-05, -2.251e-02, 3.790e-03, -5.180e-03, -4.419e-04, -7.215e-04, -1.837e-04, 2.948e-04, -7.218e-06, 7.092e-04, -1.925e-03, 9.340e-04, 3.419e-06) * s0_0_0;
	r0 += M4(1.200e-04, -4.088e-05, -1.200e-05, 4.051e-05, 2.291e-02, -3.268e-02, -8.659e-04, -4.991e-03, -6.138e-04, 1.345e-03, 5.800e-06, 5.392e-05, -5.797e-03, 1.596e-02, 7.503e-05, 7.076e-04) * s0_0_1;
	r0 += M4(-4.427e-07, -4.933e-06, -5.960e-08, -2.067e-07, 4.386e-04, 1.203e-02, 5.828e-05, 3.168e-03, -2.157e-04, 2.074e-02, 1.874e-05, -1.236e-04, 2.332e-03, -1.059e-02, -3.260e-05, -1.136e-03) * s0_0_2;
	r0 += M4(1.455e-02, 1.914e-03, 9.142e-04, 3.464e-03, -2.564e-02, -1.601e-03, -1.752e-02, -1.533e-03, -2.081e-02, -3.515e-04, -1.685e-02, -9.867e-05, 8.603e-02, 1.469e-02, 1.307e-02, 1.436e-05) * s0_1_0;
	r0 += M4(1.323e-01, 1.397e-01, -1.418e-03, 5.323e-03, 1.795e-01, -4.036e-01, 1.485e-01, -2.483e-01, 2.951e-01, -1.251e-02, 7.337e-02, 2.246e-02, -2.150e-02, -1.841e-01, -8.785e-02, 4.203e-02) * s0_1_1;
	r0 += M4(-5.380e-04, 2.765e-02, -1.153e-04, -1.401e-03, -6.422e-04, 1.965e-02, 3.632e-05, 2.195e-02, 7.017e-06, 1.023e-01, 4.422e-04, 9.844e-02, 4.215e-04, 4.033e-02, 1.013e-02, 6.739e-03) * s0_1_2;
	r0 += M4(-5.038e-03, -4.938e-04, -2.503e-02, 1.828e-03, -9.919e-03, -3.140e-04, -1.927e-02, 1.279e-03, -2.701e-04, -3.981e-05, 1.105e-02, 5.597e-04, 1.623e-02, 6.666e-02, 8.912e-02, 3.471e-02) * s0_2_0;
	r0 += M4(-7.259e-03, -1.027e-02, 3.565e-01, -7.395e-02, 3.844e-03, 7.245e-03, 2.384e-02, -9.760e-02, -1.556e-04, 5.714e-04, 9.490e-02, 6.518e-02, 5.448e-02, -7.519e-02, 1.322e-01, -3.237e-01) * s0_2_1;
	r0 += M4(1.712e-03, 7.401e-02, -8.492e-04, 6.237e-02, -1.458e-04, 3.116e-04, 1.628e-04, 1.388e-02, 3.056e-05, 1.414e-04, -1.169e-04, 3.967e-02, -3.984e-03, -1.863e-03, -9.729e-03, 2.050e-02) * s0_2_2;
	r0 += M4(-2.484e-05, -2.187e-05, -1.005e-04, 1.849e-05, 7.118e-05, 3.593e-05, 5.728e-04, -3.100e-05, 2.070e-03, 5.467e-04, 3.539e-04, -7.155e-05, -3.826e-05, -1.990e-06, 2.032e-06, 4.235e-06) * s1_0_0;
	r0 += M4(-3.506e-02, -1.324e-04, -5.540e-04, 1.826e-04, -2.706e-02, -1.868e-03, -2.210e-03, -8.723e-04, -4.993e-02, -1.425e-03, 2.092e-03, -2.422e-03, 3.159e-02, -2.655e-04, -1.602e-05, 1.011e-04) * s1_0_1;
	r0 += M4(-5.771e-02, -1.146e-01, -4.230e-03, 1.207e-03, -1.993e-02, -5.457e-02, 1.214e-04, -2.469e-04, 1.641e-04, -3.162e-02, 2.097e-04, -4.595e-05, 1.801e-02, 4.359e-02, -4.535e-03, 1.309e-05) * s1_0_2;
	r0 += M4(-1.651e-04, -2.446e-05, 3.512e-04, 9.300e-05, -5.673e-04, 3.976e-07, -3.529e-04, -3.613e-06, 1.675e-02, -1.155e-04, 2.914e-02, 5.782e-05, 6.980e-05, 5.131e-07, -9.442e-05, -2.517e-06) * s1_1_0;
	r0 += M4(-7.376e-02, -8.678e-03, -1.123e-01, 1.158e-03, 5.892e-02, -4.371e-04, 4.883e-02, 4.747e-03, 9.023e-02, 2.823e-02, -5.176e-01, 5.538e-02, 6.909e-02, -3.198e-06, 8.570e-02, -1.410e-04) * s1_1_1;
	r0 += M4(-3.331e-04, 3.291e-02, 4.877e-02, -3.701e-01, 3.879e-02, 4.190e-01, -4.985e-02, -1.657e-01, -4.289e-03, -2.599e-02, 4.465e-03, -6.274e-02, 4.889e-03, 1.736e-01, -2.397e-02, 2.280e-01) * s1_1_2;
	r0 += M4(-1.777e-05, -3.558e-07, 1.618e-04, 8.724e-05, -1.499e-05, -1.697e-06, -2.259e-04, -1.916e-06, 1.023e-05, -1.417e-05, 4.195e-03, -4.454e-05, -1.351e-05, 1.557e-07, 8.235e-05, 2.865e-06) * s1_2_0;
	r0 += M4(4.701e-04, -2.294e-05, 2.109e-03, 4.266e-03, 2.083e-05, -8.246e-05, 1.041e-02, -1.895e-03, -2.572e-04, 2.249e-05, 3.731e-02, 1.610e-02, -1.643e-04, 9.860e-05, 2.547e-02, 7.374e-05) * s1_2_1;
	r0 += M4(5.947e-05, 8.895e-04, -8.297e-04, 3.059e-02, 5.294e-04, 1.142e-04, 3.577e-02, 5.635e-02, -1.139e-04, -2.832e-04, 1.562e-03, 1.996e-04, 1.151e-03, 1.006e-03, 2.829e-02, 4.719e-02) * s1_2_2;
	s0_0_0 = G[2][xy.y+0][xy.x+0]; s0_0_1 = G[2][xy.y+0][xy.x+1];
	s0_0_2 = G[2][xy.y+0][xy.x+2]; s0_1_0 = G[2][xy.y+1][xy.x+0];
	s0_1_1 = G[2][xy.y+1][xy.x+1]; s0_1_2 = G[2][xy.y+1][xy.x+2];
	s0_2_0 = G[2][xy.y+2][xy.x+0]; s0_2_1 = G[2][xy.y+2][xy.x+1];
	s0_2_2 = G[2][xy.y+2][xy.x+2]; s1_0_0 = G[3][xy.y+0][xy.x+0];
	s1_0_1 = G[3][xy.y+0][xy.x+1]; s1_0_2 = G[3][xy.y+0][xy.x+2];
	s1_1_0 = G[3][xy.y+1][xy.x+0]; s1_1_1 = G[3][xy.y+1][xy.x+1];
	s1_1_2 = G[3][xy.y+1][xy.x+2]; s1_2_0 = G[3][xy.y+2][xy.x+0];
	s1_2_1 = G[3][xy.y+2][xy.x+1]; s1_2_2 = G[3][xy.y+2][xy.x+2];
	r0 += M4(4.508e-07, 7.977e-07, 6.876e-08, 1.146e-07, 1.803e-02, -1.738e-03, 5.213e-03, 1.829e-04, 4.377e-05, 2.110e-05, 4.807e-06, 3.061e-06, -2.807e-02, -3.122e-03, 2.287e-03, 1.678e-04) * s0_0_0;
	r0 += M4(-4.762e-05, -7.229e-06, -1.182e-05, 8.053e-06, -2.686e-01, 2.926e-01, -6.323e-02, 6.940e-02, -7.513e-05, -8.693e-05, -1.226e-05, 8.088e-06, -2.095e-01, -2.028e-01, -1.948e-03, -2.465e-03) * s0_0_1;
	r0 += M4(-1.948e-04, 6.026e-06, 8.438e-06, -1.949e-05, 1.910e-03, -2.357e-02, 1.376e-03, -2.412e-02, 2.590e-05, 7.115e-05, 8.273e-06, -7.282e-06, -5.805e-04, -2.182e-02, -2.807e-04, 2.076e-03) * s0_0_2;
	r0 += M4(-3.140e-05, 4.863e-06, 2.623e-05, 1.017e-05, 1.432e-02, 2.374e-04, 4.041e-02, -8.439e-05, 4.475e-02, 1.522e-03, 8.010e-04, 6.195e-05, -3.615e-04, -3.009e-04, 3.799e-02, 1.948e-03) * s0_1_0;
	r0 += M4(1.460e-02, 6.134e-04, -1.039e-03, -2.301e-06, -4.826e-02, 5.504e-02, -2.314e-01, 2.107e-01, 2.317e-01, 2.480e-01, -1.355e-03, 2.399e-03, 8.082e-05, 1.872e-04, 2.045e-01, 2.125e-01) * s0_1_1;
	r0 += M4(2.860e-02, 3.556e-02, -6.853e-04, -1.684e-03, 8.286e-04, -1.596e-02, 2.893e-03, -1.212e-02, 4.354e-04, 2.551e-02, 3.822e-04, -3.231e-03, 3.475e-05, -4.319e-03, 3.429e-04, 1.636e-02) * s0_1_2;
	r0 += M4(-2.831e-05, -2.963e-06, 1.216e-05, -7.183e-06, 2.527e-03, -2.485e-04, 3.471e-03, -4.780e-05, -1.997e-04, 1.113e-03, -3.606e-02, -1.472e-03, -3.935e-07, -4.689e-08, -3.526e-05, -1.709e-07) * s0_2_0;
	r0 += M4(2.696e-02, -5.038e-05, 4.252e-02, -9.957e-04, -4.676e-03, 2.481e-03, -1.472e-02, 2.189e-02, 1.892e-04, -1.939e-03, -2.353e-01, -2.374e-01, 9.587e-07, -6.885e-06, -1.608e-05, -1.015e-03) * s0_2_1;
	r0 += M4(3.294e-02, 1.171e-01, 1.237e-01, 1.364e-01, 1.548e-05, -3.184e-03, 8.965e-04, -9.610e-03, 5.689e-05, 8.859e-04, 1.031e-03, -2.810e-02, -1.871e-06, -3.116e-06, 1.126e-04, 5.257e-04) * s0_2_2;
	r0 += M4(1.862e-02, 7.012e-04, 3.921e-04, 2.005e-05, 1.252e-02, 5.752e-03, -6.882e-04, -4.339e-05, -2.056e-06, 3.160e-06, 1.719e-05, -5.840e-06, 3.618e-04, -9.278e-06, -6.202e-05, 1.375e-05) * s1_0_0;
	r0 += M4(1.034e-01, 1.067e-01, 8.270e-04, 1.156e-03, 1.861e-02, 2.258e-02, -7.989e-04, -2.950e-03, 2.970e-02, -2.628e-03, -7.380e-04, -1.435e-04, 1.248e-02, 4.594e-04, -4.789e-04, 1.469e-04) * s1_0_1;
	r0 += M4(-3.357e-04, 1.656e-02, -1.327e-04, -2.427e-04, 5.873e-04, 9.173e-03, 3.532e-04, 4.103e-04, 1.509e-03, -4.274e-02, 6.382e-05, -2.163e-03, -7.501e-04, -9.335e-03, -2.784e-04, -2.103e-04) * s1_0_2;
	r0 += M4(3.276e-02, 4.103e-03, 1.195e-02, -8.211e-04, -1.304e-01, 2.031e-02, 1.264e-01, 1.397e-02, -6.187e-05, -7.650e-06, 2.753e-05, 1.511e-05, 2.059e-02, 1.079e-04, -3.347e-04, -8.653e-06) * s1_1_0;
	r0 += M4(-2.166e-02, -6.227e-02, 1.624e-01, 3.174e-01, -2.107e-01, -3.988e-01, 1.733e-01, 2.705e-01, 2.299e-01, 2.130e-03, 2.232e-01, 2.063e-03, -4.584e-01, 9.985e-02, 6.421e-02, -1.998e-03) * s1_1_1;
	r0 += M4(4.003e-04, 6.800e-03, 1.004e-03, 1.293e-03, -1.039e-02, -2.082e-02, 5.835e-04, 3.603e-02, -1.421e-03, -2.196e-01, -1.139e-03, -2.184e-01, 2.743e-03, -6.176e-02, -7.442e-03, -3.091e-02) * s1_1_2;
	r0 += M4(-2.494e-03, 8.406e-04, -2.718e-02, -1.392e-03, 2.445e-03, -2.720e-03, -1.410e-02, -5.833e-03, 6.587e-05, 3.724e-06, -4.496e-05, -1.202e-05, 1.025e-03, 3.001e-05, -3.634e-04, 3.708e-04) * s1_2_0;
	r0 += M4(-9.342e-04, -2.636e-03, -5.497e-02, -1.081e-01, 7.068e-04, 4.685e-03, -2.842e-03, -3.245e-04, -2.749e-04, 4.471e-04, 3.305e-02, -1.939e-03, 7.559e-04, -3.317e-03, -7.131e-02, -9.962e-03) * s1_2_1;
	r0 += M4(7.623e-05, 9.693e-04, 2.190e-04, 1.595e-03, -1.109e-03, -1.655e-03, -1.237e-02, -1.359e-02, -9.044e-05, 8.955e-05, 1.524e-03, -4.298e-02, -3.111e-05, -1.250e-03, -2.998e-03, -2.972e-02) * s1_2_2;
	s0_0_0 = G[4][xy.y+0][xy.x+0]; s0_0_1 = G[4][xy.y+0][xy.x+1];
	s0_0_2 = G[4][xy.y+0][xy.x+2]; s0_1_0 = G[4][xy.y+1][xy.x+0];
	s0_1_1 = G[4][xy.y+1][xy.x+1]; s0_1_2 = G[4][xy.y+1][xy.x+2];
	s0_2_0 = G[4][xy.y+2][xy.x+0]; s0_2_1 = G[4][xy.y+2][xy.x+1];
	s0_2_2 = G[4][xy.y+2][xy.x+2]; s1_0_0 = G[5][xy.y+0][xy.x+0];
	s1_0_1 = G[5][xy.y+0][xy.x+1]; s1_0_2 = G[5][xy.y+0][xy.x+2];
	s1_1_0 = G[5][xy.y+1][xy.x+0]; s1_1_1 = G[5][xy.y+1][xy.x+1];
	s1_1_2 = G[5][xy.y+1][xy.x+2]; s1_2_0 = G[5][xy.y+2][xy.x+0];
	s1_2_1 = G[5][xy.y+2][xy.x+1]; s1_2_2 = G[5][xy.y+2][xy.x+2];
	r0 += M4(9.725e-05, 1.874e-04, 4.858e-05, -5.903e-05, -4.062e-03, -2.529e-03, 2.826e-03, -4.986e-03, 9.504e-05, 8.070e-05, -2.814e-05, -7.798e-05, 7.468e-02, 6.562e-02, 5.290e-02, 8.067e-02) * s0_0_0;
	r0 += M4(-1.738e-03, 2.143e-03, 1.848e-03, -5.519e-04, -1.148e-02, -5.215e-03, 1.879e-03, 7.182e-03, -3.073e-02, 3.462e-03, -1.789e-03, -3.584e-04, -2.683e-02, -3.652e-02, 8.357e-03, -2.225e-02) * s0_0_1;
	r0 += M4(1.390e-03, 2.765e-02, 1.227e-04, 1.102e-03, -3.279e-03, -7.555e-03, -8.961e-04, -1.711e-03, -3.495e-04, 4.194e-02, 2.502e-04, 1.570e-03, 2.172e-03, 2.746e-03, 3.628e-05, 7.618e-03) * s0_0_2;
	r0 += M4(2.855e-04, 2.052e-07, -1.148e-03, -1.481e-04, 2.058e-01, 5.788e-02, -2.576e-01, -7.542e-02, -5.375e-05, -6.061e-05, 1.930e-04, -1.318e-04, -2.384e-02, 1.515e-04, 7.722e-03, -2.877e-03) * s0_1_0;
	r0 += M4(-9.352e-02, 5.181e-03, -9.941e-02, -1.623e-02, 5.310e-02, 1.953e-01, -6.799e-02, -2.746e-01, -2.104e-01, -1.259e-03, -2.096e-01, -1.678e-03, -4.066e-02, -7.409e-02, -8.179e-02, -7.204e-02) * s0_1_1;
	r0 += M4(3.898e-02, -3.718e-01, 2.628e-03, 4.085e-02, 5.798e-03, -1.106e-04, -1.947e-03, -2.561e-03, 3.625e-04, 1.938e-01, -6.514e-04, 1.944e-01, 1.380e-03, -6.245e-03, 2.119e-03, -8.121e-03) * s0_1_2;
	r0 += M4(1.277e-05, 4.185e-06, 2.090e-04, -5.710e-05, -7.175e-05, -5.720e-04, 3.448e-02, 1.343e-02, -3.675e-05, -1.858e-05, -1.666e-04, 1.914e-04, 7.233e-04, -9.144e-05, -8.747e-03, 3.295e-03) * s0_2_0;
	r0 += M4(6.131e-04, -2.037e-05, -3.454e-02, -4.125e-04, -3.157e-04, -9.872e-04, 9.615e-03, 3.798e-02, -3.137e-05, -1.840e-03, -2.836e-02, 1.985e-03, -3.898e-04, 6.697e-05, -1.196e-02, -2.474e-02) * s0_2_1;
	r0 += M4(-9.355e-04, 7.656e-04, -1.011e-01, -1.091e-01, -9.441e-06, -2.545e-04, 2.577e-03, -2.518e-03, -3.401e-05, 1.308e-03, -2.210e-04, 4.525e-02, 1.522e-04, 3.450e-04, 3.298e-04, 1.858e-03) * s0_2_2;
	r0 += M4(-1.769e-01, 1.719e-02, -1.293e-02, -1.577e-03, 5.218e-03, -4.714e-03, 1.419e-02, 6.705e-03, -1.278e-02, 4.247e-06, -9.404e-07, -1.495e-05, -1.539e-01, -6.323e-02, -7.060e-02, -1.108e-02) * s1_0_0;
	r0 += M4(-1.217e-02, -2.603e-01, 1.157e-02, -1.396e-02, 8.549e-03, 2.389e-02, 8.698e-04, 8.858e-03, -2.959e-02, -3.622e-02, 1.618e-04, -1.511e-05, -1.438e-03, -7.191e-02, 3.722e-04, -4.920e-02) * s1_0_1;
	r0 += M4(4.154e-04, 2.132e-02, -6.325e-05, 1.609e-02, -1.662e-04, 3.990e-04, 3.054e-05, -3.115e-05, 1.579e-04, -7.241e-03, -5.621e-07, 9.668e-05, 5.260e-07, -1.083e-06, 5.126e-06, 1.120e-05) * s1_0_2;
	r0 += M4(2.315e-03, -2.270e-03, 7.846e-02, -1.872e-02, -1.251e-01, -1.272e-01, -1.655e-01, -1.165e-01, -3.245e-02, 1.040e-04, -3.693e-02, 1.877e-05, -8.081e-04, 1.754e-04, -5.969e-02, -3.145e-02) * s1_1_0;
	r0 += M4(-1.694e-03, 1.287e-02, 2.596e-02, 1.655e-01, 1.958e-02, 3.064e-02, 4.332e-02, 1.548e-02, -5.969e-02, -7.837e-02, -7.442e-02, -9.095e-02, 4.118e-04, -1.614e-04, -3.599e-04, -3.041e-02) * s1_1_1;
	r0 += M4(2.262e-06, -1.057e-03, -2.817e-04, -5.865e-03, -2.496e-05, 8.027e-04, -3.005e-04, 1.351e-03, 3.159e-04, -9.685e-03, 1.805e-04, -1.728e-02, -1.148e-06, 5.599e-07, -4.229e-06, -2.425e-05) * s1_1_2;
	r0 += M4(-9.842e-07, 1.650e-05, 1.953e-04, 1.733e-03, 6.508e-03, 1.679e-02, 1.776e-02, -1.198e-03, 2.191e-05, 1.840e-05, -8.501e-03, 9.905e-05, 4.624e-06, -6.559e-07, -2.543e-06, 8.151e-06) * s1_2_0;
	r0 += M4(4.666e-06, 2.373e-06, -3.417e-04, -5.317e-04, 1.291e-05, 4.223e-03, 3.622e-03, 1.124e-02, 2.187e-04, 2.168e-04, -1.822e-02, -2.690e-02, -3.319e-06, 5.140e-07, 2.767e-06, -1.070e-05) * s1_2_1;
	r0 += M4(-2.769e-08, 2.554e-06, 7.563e-07, -5.885e-05, -1.342e-05, -2.346e-05, -3.910e-05, 1.801e-04, -3.134e-06, 4.671e-06, 2.541e-04, -1.233e-03, 1.902e-07, -2.292e-07, 3.118e-07, 1.308e-05) * s1_2_2;
	r0 += V4(9.275e-10, -9.558e-09, 3.734e-09, 9.500e-09);
	vec2 opt = 0.5 * LUMA_pt;
	vec2 fpos = (vec2(opos) + vec2(0.5)) * opt;
	imageStore(out_image, opos + ivec2(0, 0), vec4(r0.x + LUMA_tex(fpos + vec2(0.0, 0.0) * opt).r, 0.0, 0.0, 1.0));
	imageStore(out_image, opos + ivec2(1, 0), vec4(r0.y + LUMA_tex(fpos + vec2(1.0, 0.0) * opt).r, 0.0, 0.0, 1.0));
	imageStore(out_image, opos + ivec2(0, 1), vec4(r0.z + LUMA_tex(fpos + vec2(0.0, 1.0) * opt).r, 0.0, 0.0, 1.0));
	imageStore(out_image, opos + ivec2(1, 1), vec4(r0.w + LUMA_tex(fpos + vec2(1.0, 1.0) * opt).r, 0.0, 0.0, 1.0));
}
